LeetCode 兩數之和

2021-10-04 00:13:37 字數 1352 閱讀 8157

暴力解法時間複雜度為o(n^2),為了對時間複雜度進行優化,使用雜湊表,通過空間換取時間。保持陣列中每個元素預期索引相互對應的最好方法也是雜湊表。時間複雜度為o(1)

//兩遍雜湊表 一遍新增索引,一邊檢查元素

class solution{

public:

vectortwosum(vector&nums,int target){

unordered_mapm;

//放入元素

for(int i=0;itwosum(vector&nums,int target){

unordered_mapm;

for(int i=0;imap;

//unordered_map的迭代器是乙個指標,指向這個元素,通過解引用來取得值。鍵值和key值分別是迭代器的first和second屬性。

size_type size() const noexcept; //返回關聯容器的大小

bool empty() const noeccept; //返回是否為空

iterator find(const key_type& k);//根據key獲取value,找到返回元素的迭代器,通過迭代器的second屬性獲取值。若沒有找到則返回unordered_map::end

iterator erase(const_iterator position);//通過位置(迭代器)刪除元素。

size_type erase(const key_type& k);//通過key刪除元素

iterator erase(const_iterator first,const_iterator last);//通過範圍(兩個迭代器)刪除元素。

void clear() noexcept //清空unordered_map

void swap (unordered_map& ump);//交換兩個unordered_map中的所有元素

//迭代器和bucket操作

begin() //返回開始的迭代器

begin(int n);//返回n號bucket的第乙個迭代器

end();

end(int n);

size_type bucket(const key_type& k)const;//返回通過雜湊函式計算key所在的bucket(僅返回由計算確定的bucket,並不保證key一定存在此bucket中,因為可能發生衝突)

size_type bucket_count() const noexcept;//返回bucket的總數

size_type bucket_size(size_type n)const;//返回第i個bucket的大小(注意:函式不會判斷n是否在count範圍內)

leetcode 兩數之和與兩數之和

題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...

LeetCode 兩數之和

基礎不好,筆試 題沒做好,校招沒offer,趕緊來刷題 這裡採用兩種方法來做,比較效能。nums i for i in range 1,100000000 target 3 class solution object deftwosum self,nums,target if len nums 1 ...

兩數之和(LEETCODE)

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 下面是 include stdafx.h includ...