【leetcode-两数之和】
一、题目
二、题解
(1)双指针
这里要注意j<length的
//声明两个指针int length = nums.length;for (int i = 0; i < length; i++) {for (int j = i + 1; j<length;j++){if (j<length && nums[i]+nums[j]==target){return new int[]{i,j};}}}return new int[] {};
(2)哈希表
int[] res = new int[2];//创建一个哈希表,将元素存储到HashMap中。key为元素,value为索引HashMap<Integer,Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {map.put(nums[i],i);}for (int i = 0; i < nums.length; i++) {int diff = target - nums[i];if (map.containsKey(diff) && map.get(diff)!=i) {Integer firstIndex = map.get(diff);res[0]=i;res[1]=firstIndex;return res;}}return res;