立刻開始複習永遠不晚 力扣刷題筆記 1 兩數之和

2021-09-27 14:11:47 字數 2531 閱讀 4079

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

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

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

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

所以返回 [0, 1]

c++

遍歷兩遍陣列 尋找結果

class

solution

else}}

}}vector<

int> answer;

answer.

push_back

(i);

answer.

push_back

(j);

return answer;}}

;

**執行結果

執行用時 : 396 ms 在所有 c++ 提交中擊敗了 13.36% 的使用者

記憶體消耗 : 9.2 mb , 在所有 c++ 提交中擊敗了 79.86% 的使用者

存在的問題: while 迴圈跳出優化 / for迴圈跳出優化

優化迴圈的結構和跳出條件

class

solution}}

vector<

int> answer;

answer.

push_back

(i);

answer.

push_back

(j);

return answer;}}

;

執行結果:

執行用時 : 244 ms, 在所有 c++ 提交中擊敗了 31.21% 的使用者

記憶體消耗 : 9.1 mb , 在所有 c++ 提交中擊敗了 96.52% 的使用者

class

solution}}

return answer;}}

;

**執行結果

執行用時 : 184 ms, 在所有 c++ 提交中擊敗了48.23%的使用者

記憶體消耗 : 9.2 mb , 在所有 c++ 提交中擊敗了 91.94%的使用者

class

solution

;// 直接返回結果 減少記憶體消耗}}

}throw

"not found!"

;// 使用exception 提高**的健壯性}}

;

**執行結果

執行用時 : 172 ms, 在所有 c++ 提交中擊敗了49.52%的使用者

記憶體消耗 : 9.1 mb , 在所有 c++ 提交中擊敗了92.59%的使用者

另外乙個小的優化: 1. 使用 乙個常數代替 num.size(), 犧牲記憶體獲取執行上的一點點速度

這差不多是暴力法能做到的極致了

map類和 hashmap 的查詢效率比較高,可以換成這兩種

c++ map類參考資料

c++ unordered_map (雜湊表) 類參考資料

class

solution

//初始化hash表

for(

int i =

0; i < nums.

size()

; i++);

// }}

return;}

};

該方法有一遍初始化 o(n) 和一遍hash的查詢o(1) 時間複雜度低,但是空間複雜度高

**執行結果

執行用時 : 8ms, 在所有 c++ 提交中擊敗了98.71%的使用者

記憶體消耗 : 10.4 mb , 在所有 c++ 提交中擊敗了16.92%的使用者

範例

執行用時為 4 ms 的

class

solution

// 沒找到就放入雜湊表中

mymap.

insert

(make_pair

(secondnum, i));

}return result;}}

;

在我自己基礎上優化的**

有個問題是根據結果來看,這段**的優化效果為負 xd

執行用時 :12 ms, 在所有 c++ 提交中擊敗了92.50%的使用者

記憶體消耗 :10.1 mb, 在所有 c++ 提交中擊敗了35.89%的使用者

class

solution

else

if(index-

>second!=i)

;//返回位置

}else

}return;}

};

力扣(LeetCode)刷題筆記

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。注 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

刷題筆記 力扣283 移動零

獲得的思考 獲得的思考 給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0 1,0 3,12 輸出 1 3,12 0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路 先統計容器中0的個數,刪掉所有的零,並在結尾補零 cla...

力扣刷題筆記 376 擺動序列

題目 376.擺動序列 如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7...