20 06 08 LeetCode01 兩數之和

2022-06-11 06:21:10 字數 973 閱讀 1267

引言:

近日刷leetcode用到unordered_map容器,由於第一次接觸,故學習之並記錄。後面附上leetcode原題與題解

unordered_map:

unordered_map是c++中的雜湊表,可以在任意型別與型別之間做對映。unordered_map內部元素是無序的。它的底層是乙個防冗餘的雜湊表(開鏈法避免位址衝突)。雜湊表的資料儲存和查詢消耗時間複雜度僅為o(1),其缺點是需要占用比較多的記憶體。

具體用法可轉博文:

leetcode原題:

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

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

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

因為 nums[

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

所以返回 [

0, 1]

思路一:暴力求解(此處省略此種方法)

思路二:

兩數之和為target,當確定其中乙個數為nums[i]時,另外乙個數也必為target-nums[i]。利用c++的unordered_map容器例項化乙個map,將陣列的值對映為其下標,遍歷陣列,如果目標值target-nums[i]的對映存在,證明nums[i]和target-nums[i]的對映同時存在,此時返回target-nums[i]的對映和當前遍歷到的下標次數,否則將當前陣列值nums[i]與下標i通過map對映。

**:

1

class

solution ;

9 map[nums[i]]=i;10}

11return

{};1213}

14 };

leetcode 三數之和為0

題目描述 給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 具體思路 ...

LeetCode 172 階乘後的0

乙個數n,他的階乘n 的尾數裡面有多少0.0的出現就是2和5組成的。也就是看1 n這n個數字中,各有多少個2和5的配對。考慮到2的數字肯定比5多,所以只用考慮有多少個5即可。比如31這個數字,31沒有5的組合,但是30有,25有,20有 5有。class solution def trailingz...

三數之和為0(leetcode 15)

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 解題思路 講解1 首...