LeetCode001 兩數之和 easy

2021-10-08 11:30:14 字數 1138 閱讀 8332

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

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

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

方法一:暴力解法

思路:

將陣列中的所有可能的兩兩組合進行相加,然後和目標數字比較,如果相等,那麼這兩個元素所對應的下標就是我們想要的結果。相信聰明的你已經想到通過雙層for迴圈來解決

class leetcode0001}}

}}

時間複雜度為:o(n^2)

空間複雜度:o(1)

方法二:陣列翻轉

思路:

a + b = target

a和b是陣列中的元素,targer為目標值

換種思路,既然陣列中兩個元素的和為目標數,也就是說

拿目標值targer減去乙個陣列中的元素a/b,得到的值a/b,也一定是在陣列中的乙個元素

這種方式可以方便的找到這兩個值,問題是,題目要求拿到對應的值的下標

那如果,每當我拿目標數target減陣列中的乙個元素a/b時,都把這個被減的元素a/b,當作下標放入到乙個新的陣列中,將該元素的下標當作新陣列對應的值此時就可以巧妙的應用php中的array_key_exists函式,判斷目標值target減a/b的結果是否是新陣列中的某乙個元素的下標,則這個下標對應的值,就是我們要找的原陣列中該元素對應的下標

描述有點抽象,**一看就明白,直接上**

class leetcode0001

$flip[$nums[$i]] = $i;}}

}

時間複雜度:o(n)

空間複雜度:o(n)

拿空間換時間的一種做法

LeetCode 001 兩數之和

給定乙個整數陣列nums和乙個整數目標值target,請你在該陣列中找出和為目標值的那兩個 整數,並返回它們的陣列下標。輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋 因為 nums 0 nums 1 9 返回 0,1 定義乙個map,key為陣列的值,value為值對應的...

LeetCode001 兩數之和 Two Sum

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的 兩個 整數。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9,所以返回 0,1 ...

Leetcode 001 兩數之和 擴充套件

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 分析 因為題目假設 每個輸入只對應一種答案,且相同的元素不能被重複利用 這就降低了難度。暴力法 使用兩次for迴圈。第乙個for迴圈依次遍歷一次陣列,每次執行過程中選取了乙...