給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解
class solution
hash[nums[i]] = i;
} return result;
}};
用到了unordered_map,他和map類似,都是通過儲存key-value,可以使得通過key快速索引到value。但內部原理有些區別。
他們之間有不同的優缺點。
缺點:
適用處,對於那些有順序要求的問題,用map會更高效一些
unordered_map
缺點:
適用處,對於查詢問題,unordered_map會更加高效一些,因此遇到查詢問題,常會考慮一下用unordered_map
size_type size() const noexcept;
返回大小。
iterator find ( const key_type& k );
查詢key對應的位置,如果沒找到則返回end()
查詢key對應的值。如果沒找到,則返回異常。
ps:據說hash表乙個key可能會對應多個值,在unordered_map中會按順序排列。但是查詢的時候回變成什麼樣我就沒做實驗試過了,有試過的同學麻煩和我說一下查詢結果。或者說如果我理解錯了也麻煩告訴我一下。
iterator begin() noexcept;
local_iterator begin ( size_type n );
size_type bucket ( const key_type& k ) const;
2、3、
1 兩數之和
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 由於元素不能重複利用,所以使用j i 1,通過雙迴圈,...
1 兩數之和
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。public int twosum int nums,int target throw new illegalargumentexception no two sum solution 這樣的時間複雜度為0 nlogn 但是通過檢視官方的...
1 兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為gai目標值的兩個整數。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 其...