給定乙個整數陣列 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...