第五章:哈希表
面试题30:插入、删除和随机访问都是O(1)的容器
题目
参考代码
class RandomizedSet {
public RandomizedSet() {
numToLocation = new HashMap<>();
nums = new ArrayList<>();
}
public boolean insert(int val) {
if (numToLocation.containsKey(val)) {
return false;
}
numToLocation.put(val, nums.size());
nums.add(val);
return true;
}
public boolean remove(int val) {
if (!numToLocation.containsKey(val)) {
return false;
}
int location = numToLocation.get(val);
numToLocation.put(nums.get(nums.size() - 1), location);
numToLocation.remove(val);
nums.set(location, nums.get(nums.size() - 1));
nums.remove(nums.size() - 1);
return true;
}
public int getRandom() {
Random random = new Random();
int r = random.nextInt(nums.size());
return nums.get(r);
}
}面试题31:最近最少使用缓存
题目
参考代码
面试题32:有效的变位词
题目
参考代码
解法一
解法二
面试题33:变位词组
题目
参考代码
解法一
解法二
面试题34:外星语言是否排序
题目
参考代码
面试题35:最小时间差
题目
参考代码
Last updated