嗯,终于要开始再撸一遍之前的题目了
这一轮就开始用Java吧,“本命”语言,哈哈
这道题估计是刷leetcode几率最高的一道题了吧,因为是第一题,哈哈
第一种思路,还是用Map
来记录,这道题在写的时候,有三个语法的地方已经不太熟悉了
- Java中的
Map
判断key存在的方法是containsKey()
; - 创建一个指定长度的数组
int[] ret = new int[2];
; - 数组的长度是属性,不是方法;
这些基础的东西不经常写,确实会忘呀
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
int[] ret = new int[2];
for(int i=0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
ret[0] = map.get(target-nums[i]);
ret[1] = i;
return ret;
}else{
map.put(nums[i],i);
}
}
return ret;
}
}
算法本身没有什么值得说的,还是要能一遍bug free才是真章,基本功呀
当然还有一种方法就是排序后的双指针法?好吧,如果排序的话,其实是有问题的,因为就会丢到原来值和索引的对应关系 😂
好吧,看来还是我太嫩了,这道题感觉还是没完全吃透