引言:
近日刷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對映。
**:
1class
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 首...