給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
你可以按任意順序返回答案。
示例 1:
輸入:nums = [2,7,11,15], target = 9示例 2:輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
輸入:nums = [3,2,4], target = 6示例 3:輸出:[1,2]
輸入:nums = [3,3], target = 6輸出:[0,1]
2 <= nums.length <= 103暴力列舉:找到兩數之和,大致的思路是,依次遍歷整個陣列。取第n個數nums[n],然後依此取n+1個數(因為n之前的數已經做過加法的,所以不必考慮,只考慮n之後的就行了),判斷nums[n]+nums[n+1]等於target,直到n=length時停止。-109 <= nums[i] <= 109
-109 <= target <= 109
只會存在乙個有效答案
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 ...