leet-code/src/main/java/leetcode/editor/cn/DesignHashmap.java

106 lines
3.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//不使用任何内建的哈希表库设计一个哈希映射HashMap
//
// 实现 MyHashMap 类:
//
//
// MyHashMap() 用空映射初始化对象
// void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,
//则更新其对应的值 value 。
// int get(int key) 返回特定的 key 所映射的 value ;如果映射中不包含 key 的映射,返回 -1 。
// void remove(key) 如果映射中存在 key 的映射,则移除 key 和它所对应的 value 。
//
//
//
//
// 示例:
//
//
//输入:
//["MyHashMap", "put", "put", "get", "get", "put", "get", "remove", "get"]
//[[], [1, 1], [2, 2], [1], [3], [2, 1], [2], [2], [2]]
//输出:
//[null, null, null, 1, -1, null, 1, null, -1]
//
//解释:
//MyHashMap myHashMap = new MyHashMap();
//myHashMap.put(1, 1); // myHashMap 现在为 [[1,1]]
//myHashMap.put(2, 2); // myHashMap 现在为 [[1,1], [2,2]]
//myHashMap.get(1); // 返回 1 myHashMap 现在为 [[1,1], [2,2]]
//myHashMap.get(3); // 返回 -1未找到myHashMap 现在为 [[1,1], [2,2]]
//myHashMap.put(2, 1); // myHashMap 现在为 [[1,1], [2,1]](更新已有的值)
//myHashMap.get(2); // 返回 1 myHashMap 现在为 [[1,1], [2,1]]
//myHashMap.remove(2); // 删除键为 2 的数据myHashMap 现在为 [[1,1]]
//myHashMap.get(2); // 返回 -1未找到myHashMap 现在为 [[1,1]]
//
//
//
//
// 提示:
//
//
// 0 <= key, value <= 10⁶
// 最多调用 10⁴ 次 put、get 和 remove 方法
//
//
//
//
// 进阶:你能否不使用内置的 HashMap 库解决此问题?
// Related Topics 设计 数组 哈希表 链表 哈希函数 👍 218 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//706:设计哈希映射
class DesignHashmap {
public static void main(String[] args) {
//测试代码
// Solution solution = new DesignHashmap().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class MyHashMap {
int[] arr;
/**
* Initialize your data structure here.
*/
public MyHashMap() {
arr = new int[1000001];
Arrays.fill(arr, -1);
}
/**
* value will always be non-negative.
*/
public void put(int key, int value) {
arr[key] = value;
}
/**
* Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key
*/
public int get(int key) {
return arr[key];
}
/**
* Removes the mapping of the specified value key if this map contains a mapping for the key
*/
public void remove(int key) {
arr[key] = -1;
}
}
/**
* Your MyHashMap object will be instantiated and called as such:
* MyHashMap obj = new MyHashMap();
* obj.put(key,value);
* int param_2 = obj.get(key);
* obj.remove(key);
*/
//leetcode submit region end(Prohibit modification and deletion)
}