鍍金池/ 問(wèn)答/數(shù)據(jù)分析&挖掘/ 給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。

給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。

雙層循環(huán)遍歷方法時(shí)LeetCode給出的標(biāo)準(zhǔn)答案如下:

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");
}

我覺(jué)得最外層的 nums.length 需要改為 nums.length-1才對(duì)吧,如果數(shù)組有4個(gè)元素,那么全程比較 3 趟就可以了,和冒泡排序的外層循環(huán)一個(gè)道理

還是說(shuō)標(biāo)準(zhǔn)答案這個(gè)寫(xiě)有什么隱含用意呢?

望賜教

回答
編輯回答
故林

不必要的, 因?yàn)閮?nèi)層循環(huán)不會(huì)執(zhí)行最后的運(yùn)算的, 因?yàn)楫?dāng) i=nums.length-1, j=i+1 已經(jīng)不小于 nums.length了

2018年9月16日 01:30