正常情况下
我们认为哈希表的复杂度时O(1)
特殊情况下 如hash的size过小 导致碰撞几率更大 那么哈希表变成了链表 那么复杂度机会退化成O(n) 对于java code来说 Map和Set时常用于工程的hash基础上抽象出来的表 Map表内主要是键值对 key不重复 value可以重复 Set是存储单个的值 不重复
有效的字母异次位(解法:将st两个单词排序字母即可)O(1)
public boolean isAnagarm(String s,String t){
if(s.length()!=t.
length()) return false;
char[]
str1=s.toCharArray(); 取字母字符
char[]
str2=t.toCharArray();
Arrays.sort(str1);
排序字母字符
Arrays.sort(str2);
return
Arrays.equals(str1,str2);
}
map.containsKey(key)方法是用来判断这个key是否在这个map里有这个key的
双数之和(一遍哈希法)O(n)
Class Solution{
public
int [] twoSum(int [] nums,int target){
Map<Integer,Integer>
map=new HashMap();
for(i=0;i<nums.length;i++){
int
c=target-nums[i];
if(map.containsKey©&&map.get©!=i){ 判断是否有这样的元素c的下标 c的下标就是key c的值就是value
return
new int [] {map.get©,i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException(“No solution”);
}
}