1. 两数之和

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

支付宝搜索:344355 领取随机红包

如果文章对您有帮助,欢迎给作者打赏