leetcode 1 兩數之和

2021-10-21 08:25:52 字數 1247 閱讀 8704

給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

你可以按任意順序返回答案。

示例 1:

輸入:nums = [2,7,11,15], target = 9

輸出:[0,1]

解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

輸入:nums = [3,2,4], target = 6

輸出:[1,2]

示例 3:

輸入:nums = [3,3], target = 6

輸出:[0,1]

2 <= nums.length <= 103

-109 <= nums[i] <= 109

-109 <= target <= 109

只會存在乙個有效答案

暴力列舉:找到兩數之和,大致的思路是,依次遍歷整個陣列。取第n個數nums[n],然後依此取n+1個數(因為n之前的數已經做過加法的,所以不必考慮,只考慮n之後的就行了),判斷nums[n]+nums[n+1]等於target,直到n=length時停止。

func twosum(nums int, target int) int就好啦。

加油少年!

雜湊表(來自leetcode官方)

注意到方法一的時間複雜度較高的原因是尋找 target - x 的時間複雜度過高。因此,我們需要一種更優秀的方法,能夠快速尋找陣列中是否存在目標元素。如果存在,我們需要找出它的索引。

使用雜湊表,可以將尋找 target - x 的時間複雜度降低到從 o(n)降低到o(1)。

這樣我們建立乙個雜湊表,對於每乙個 x,我們首先查詢雜湊表中是否存在 target - x,然後將 x 插入到雜湊表中,即可保證不會讓 x 和自己匹配。

func twosum(nums int, target int) int

for i, x := range nums

}hashtable[x] = i

}return nil

}

LeetCode 1 兩數之和

給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 step 1 class solution object def tw...

leetcode 1 兩數之和

1.兩數之和 這道題和程式設計之法上面的題目有以下幾個不同 1 題目所給定的陣列是無序的,程式設計之法裡面是預設有序的 2 要求輸出原陣列的序號,如果用乙個結構體維護陣列下標,那麼需要o n 的空間,顯然不是最好的方法 3 題目中包含負數,之前想用數值直接表示陣列下標,陣列值為原來的真正陣列下標,但...

leetcode 1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 class solution for int i 0 ...