Leetcode 1.两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2]; //1.创建一个存放结果的数组res
HashMap<Integer,Integer> map = new HashMap<>(); //2.创建一个辅助的哈希表
for(int i = 0; i < nums.length; i ++){ //3.遍历
int tmp = target - nums[i]; //作差
if(map.containsKey(tmp)){ //判断
res[0] = map.get(tmp);
res[1] = i;
break;
}
map.put(nums[i],i);
}
return res; //返回
}
}
![b8ce77399327d5681ec53b7129ba191e.png](https://img-blog.csdnimg.cn/img_convert/b8ce77399327d5681ec53b7129ba191e.png)
详细理解:
1.map重要用法[map.put() map.get() map.containsKey()]
放入数据一般形式 -----put(object key, object value)
例如:map.put(1,”a”)
===============================================================
根据key获取对应的value一般形式-------get(object key)
例如:map.get(1);//获取到对应的key=1时的value=a;
===============================================================
判断是否包含某个元素一般形式containsKey(object Key)//是否包含某个元素。一般配合put和get,实现匹配并修改map中的元素。
相关链接:
Java中HashMap的用法_eck_燃的博客-CSDN博客blog.csdn.net![8d35ce35dbdcb8fb67ea651cc390228c.png](https://img-blog.csdnimg.cn/img_convert/8d35ce35dbdcb8fb67ea651cc390228c.png)
2.charAt()-----用于返回指定位置的字符
var str=”Hello World!”
document.write(str.charAt(1))
输出结果:e
Leetcode3.最长无重复子串长度
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
解法1:双指针遍历一次
- 定义一个变量maxlen,记录不重复子串的最大长度
- 定义一个哈希表,辅助遍历查询;
- 定义一对左右指针,遍历字符串,对每一个字符做如下处理:
- 判断该字符在不在map中,若存在,更新左边界max{L,c_index+1};
- 将该字符及索引放到map中;
- 更新maxLen = max {maxLen,R-L+1}
4.返回maxLen