猿问

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

双层循环遍历方法时LeetCode给出的标准答案如下:

public int[] twoSum(int[] nums, int target) {    for (int i = 0; i < nums.length; i++) {        for (int j = i + 1; j < nums.length; j++) {            if (nums[j] == target - nums[i]) {                return new int[] { i, j };
            }
        }
    }    throw new IllegalArgumentException("No two sum solution");
}

我觉得最外层的 nums.length 需要改为 nums.length-1才对吧,如果数组有4个元素,那么全程比较 3 趟就可以了,和冒泡排序的外层循环一个道理

还是说标准答案这个写有什么隐含用意呢?

望赐教


偶然的你
浏览 3125回答 1
1回答

浮云间

不必要的, 因为内层循环不会执行最后的运算的, 因为当 i=nums.length-1, j=i+1 已经不小于 nums.length了
随时随地看视频慕课网APP

相关分类

数据结构
我要回答