leetcode算法题01
最近求職需要重新刷算法題,從今天開始每天至少做一個leatcode的題
如果有更好的算法或者換了語言也會更新
- 題目:
給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
- 解法 :
官方給了三種解法:
-
是暴力循環,想的簡單,易于理解,但是如果數組里元素很多的話就很卡,復雜度分析:
時間復雜度:O(n^2) ), 對于每個元素,我們試圖通過遍歷數組的其余部分來尋找它所對應的目標元素,這將耗費 O(n) 的時間。因此時間復雜度為 O(n^2)。
空間復雜度:O(1)。 -
是用哈希表循環兩遍,第一遍是錄入哈希表,第二遍再循環找一遍,
復雜度分析:時間復雜度:O(n), 我們把包含有 nn 個元素的列表遍歷兩次。由于哈希表將查找時間縮短到 O(1),所以時間復雜度為 O(n)。
空間復雜度:O(n), 所需的額外空間取決于哈希表中存儲的元素數量,該表中存儲了 n個元素。
-
是用哈希表循環一遍,在第一遍時一邊錄入一邊排查,之前面試也碰到過這道題,當時面試官給的解法就是這種,相對理想
復雜度分析:
時間復雜度:O(n), 我們只遍歷了包含有 nn 個元素的列表一次。在表中進行的每次查找只花費 O(1) 的時間。
空間復雜度:O(n), 所需的額外空間取決于哈希表中存儲的元素數量,該表最多需要存儲 n 個元素。 -
代碼
- 心得
題不難,主要是練習通過哈希表的排序是怎么用js實現的,哈希表的搜索簡單快捷,實現起來也不難。之前沒用js做過。
在調試的過程中出現了2回問題
-
剛開始我只是想把數組的值作為key,序號作為value,沒有考慮當兩個值都是一樣的時候哈希表會覆蓋,報了一回錯,加了個if判斷了一下,就解決了
-
數據范圍考慮不全。沒有考慮給的和等于他本身時的情況,報了一回錯,加了個if判斷了一下,就解決了。
-
更新
-
未來想用python實現一下,算法方面應該沒什么可優化的了。
轉載于:https://www.cnblogs.com/dadaochangcun/p/9806574.html
總結
以上是生活随笔為你收集整理的leetcode算法题01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团点评稳定价格措施及稳定价格期结束 超
- 下一篇: lnmp一键包的thinkphp5 ng