題目描述:
給定乙個整數數列,找出其中和為特定值的那兩個數。
你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class solution ;
}return ;
}};
雜湊表解法,時間複雜度o(n)
遍歷陣列,每次都記錄:雜湊表[target - 當前數字] = 當前數字的索引,那麼在往後的遍歷中如果遇到map的鍵值包含當前數字的情況,說明之前的某個數字可以和當前數字加和為target,返回倆個數字的索引即可
寫法上需要清楚c++中for迴圈的執行順序:
①初始化i為0
②判斷i是否小於陣列長度,滿足條件執行③,否則跳出迴圈
③執行for語句對應的{}中的**
④執行m[target - nums[i - 1]] = i++
a.執行右邊的表示式i++,記錄結果為當前的i所擁有的值,並使得此時變數i的值遞增一步
b.計算target - nums[i - 1],此時i的值為用於賦值的值 + 1,所以i - 1 = 用於賦值的值
c.寫入雜湊表
此行**等同於m[target - nums[i]] = i; i++;
m.count(nums[i])表示map是否存在這個元素,若存在返回1不存在返回0。
參考:關於map的用法
1 兩數之和 C
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 ...
1 兩數之和
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解class solution hash nums i...
1 兩數之和
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 由於元素不能重複利用,所以使用j i 1,通過雙迴圈,...