題目:給定乙個整數陣列 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迴圈依次遍歷一次陣列,每次執行過程中選取了乙...