题目: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,避免了重复计算已经计算过的值,耗时大大缩短。