算法原理
1.哈希表是什么?
哈希表是存储数据的容器
2.有啥用?
"快速"查找某个元素(最多可以达到O(1))
3.什么时候用?
当我们频繁的查找某一个数时,可以用哈希表,也可以用二分
4.怎么用?
1.容器(哈希表)
2.用数组模拟简易哈希表(字符串中的"字符",数据范围很小的时候)
题目解析
1.两数之和
https://leetcode.cn/problems/two-sum/description/
题目描述
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为t的那两个数,并返回数组下标
例如: nums=[2,7,11,15] t=9 输出:[0,1]
算法原理
解法一:暴力枚举(固定一个数,往前加)
解法二:哈希表做优化
2,7,11,15\] t=9
将11扔进哈希表的时候,因为t=9,所以我们要找t=-2,在哈希表中找
#### 代码实现
```java
class Solution {
public int[] twoSum(int[] nums, int target) {
Map 输出[["bat"],["nat","tan"],["ate","tea","eat"]] 解法:哈希表 1.判断2个字符串是否是字母异位词(排序) 2.如何分组<String,String[]> "aet"->"eat","tea","ate" "ant"->"tan","nat" "abt"->"bat"算法原理
代码实现
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> hash=new HashMap<>();
for(String s:strs){
char[] tmp=s.toCharArray();
Arrays.sort(tmp);
String str=new String(tmp);
if(!hash.containsKey(str)){
hash.put(str,new ArrayList<>());
}
hash.get(str).add(s);
}
return new ArrayList(hash.values());
}
}