極客演算法第一周

2021-10-03 22:48:20 字數 2249 閱讀 7051

1. 兩數之和

方法一:暴力法(兩層迴圈)時間複雜度:o(n^2) ,空間複雜度o(1)

方法二:兩遍雜湊表(第一遍構造雜湊表,第二遍找答案),時間複雜度:o(n) 空間複雜度o(n)

方法三:一遍雜湊表(最優解)時間複雜度:o(n) ,空間複雜度o(n)

11. 盛最多水的容器

方法一:暴力法(兩層迴圈)時間複雜度:o(n^2) ,空間複雜度:o(1)

方法二:雙指標法(前後兩個指標向中間移動,最優解)時間複雜度:o(n) ,空間複雜度:o(1)

15. 三數之和

方法一:暴力法(三層迴圈),時間複雜度:o(n^3) ,空間複雜度:o(1)

方法二:雜湊表(排序+兩層迴圈),時間複雜度:o(n^2) ,空間複雜度:o(1)

方法三:排序+雙指標,時間複雜度:o(n^2) ,空間複雜度:o(1)

21. 合併兩個有序鍊錶

方法一:迭代,時間複雜度:o(m+n) ,空間複雜度:o(1)

方法二:遞迴(沒看明白),時間複雜度:o(m+n) ,空間複雜度:o(m+n)

24. 兩兩交換鍊錶中的節點

方法一:迭代, 時間複雜度:o(n) ,空間複雜度:o(1)

方法二:遞迴,時間複雜度:o(n) ,空間複雜度:o(n)

25. k 個一組翻轉鍊錶

方法一:迭代+就地逆置法, 時間複雜度:o(n) ,空間複雜度:o(1)

方法二:迭代+尾插法, 時間複雜度:o(n) ,空間複雜度:o(1)

方式三:遞迴

26. 刪除排序陣列中的重複項

方法一:雙指標, 時間複雜度:o(n) ,空間複雜度:o(1)

66. 加一

末位無進製,則末位加一即可,因為末位無進製,前面也不可能產生進製,比如 45 => 46

末位有進製,在中間位置進製停止,則需要找到進製的典型標誌,即為當前位 %10後為 0,則前一位加 1,直到不為 0 為止,比如 499 => 500

末位有進製,並且一直進製到最前方導致結果多出一位,對於這種情況,需要在第 2 種情況遍歷結束的基礎上,進行單獨處理,比如 999 => 1000

時間複雜度:o(n) ,空間複雜度:o(1)

70. 爬樓梯

方法一:暴力遞迴, 時間複雜度:o(2^n) ,空間複雜度:o(n)

方法二:記憶化遞迴,時間複雜度:o(n) ,空間複雜度:o(n)

方法三:動態規劃(dp[i] = dp[i-1]+dp[i-2]),時間複雜度:o(n) ,空間複雜度:o(n)

方法四:斐波那契數列 ,時間複雜度:o(n) ,空間複雜度:o(1)

方法五:binets 方法(矩陣相乘),時間複雜度:o(logn) ,空間複雜度:o(1)

方法六:斐波那契公式,時間複雜度:o(logn) ,空間複雜度:o(1)

public class solution 

}

88. 合併兩個有序陣列

方法一:合併排序,時間複雜度:o((m+n)log(m+n)) ,空間複雜度:o(1)

方法二:雙指標從前往後,時間複雜度:o(m+n) ,空間複雜度:o(m)

方法三:雙指標從後往前,時間複雜度:o(m+n) ,空間複雜度:o(1)

141. 環形鍊錶

方法一:雜湊表(set) ,時間複雜度:o(n) ,空間複雜度:o(n)

方法二:快慢指標,時間複雜度:o(n) ,空間複雜度:o(1)

142. 環形鍊錶 ii

方法一:雜湊表(set) ,時間複雜度:o(n) ,空間複雜度:o(n)

方法二:快慢指標,時間複雜度:o(n) ,空間複雜度:o(1)

189. 旋轉陣列

方法一:暴力法(巢狀迴圈),時間複雜度:o(n*k) ,空間複雜度:o(1)

方法二:使用額外空間儲存旋轉後的資料,時間複雜度:o(n) ,空間複雜度:o(n)

方法三:使用環狀替換(最優解),時間複雜度:o(n) ,空間複雜度:o(1)

方法四:三次反轉,時間複雜度:o(n) ,空間複雜度:o(1)

方法五:python切片,(nums[:] = nums[n-k:] + nums[:n-k] )

206. 反轉鍊錶

方法一:就地逆置法, 時間複雜度:o(n) ,空間複雜度:o(1)

方法二:頭插法, 時間複雜度:o(n) ,空間複雜度:o(1)

方法三:遞迴,時間複雜度:o(n) ,空間複雜度:o(n)

283. 移動零

最優解:雙指標法(快慢指標,慢指標前都是非0,慢指標和當前指標之間都是0),時間複雜度:o(n) ,空間複雜度:o(1)

演算法,第一周

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

Coursera演算法第一周

現在是第三週,剛把第一周做完,要抓緊了。首先是merge sort演算法,採用二分然後遞迴的方法,將時間優化到o nlog n def sort split a,b l a len a l b len b l l a l b l i 0 j 0 for k in range l if i l a a...

演算法訓練第一周

leetcode 283 移動零 基礎寫法 class solution 設定指標i j 遍歷nums i 當nums i 0 即當值不為0時 nums j nums i j int j 0 for int i 0 i i 可以使i j指標同時向右移 只有當nums i 0 j才移動 造成j指標是慢...