1 兩數之和 c

2021-10-01 13:57:48 字數 783 閱讀 9174

題目描述:

給定乙個整數數列,找出其中和為特定值的那兩個數。

你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。

示例:給定 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,通過雙迴圈,...