题目:https://leetcode-cn.com/problems/two-sum/
代码:
class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; for(int i=0;i<nums.length-1;i++){ for (int j=1;j<nums.length;j++){ if(i==j){ continue; } if(nums[i]+nums[j]==target){ res[0] = i; res[1] = j; return res; } } } return res; } }
思路:直接遍历数组即可。
注意:因为题目要求不能重复利用数组中同样的元素,所以在i=j的时候要跳过。
优化:
class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; for(int i=0;i<nums.length-1;i++){ for (int j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ res[0] = i; res[1] = j; return res; } } } return res; } }
这里改动了j开始的索引为i+1,避免了重复计算已经计算过的值,耗时大大缩短。