日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

劍指 Offer 系列完結撒花!!
本篇文章是對整個系列的精華總結, 對系列的每篇文章進行了分類, 并用一句話概括每道題的思路, 方便大家理解和記憶, 當然也包含原文完整鏈接供大家參考
總的來說, 寫這個系列耗費了我不少精力, 不過我也很開心能和大家分享, 真心希望能對大家有所幫助, 也希望大家能夠多多點贊轉發和分享, 讓更多人看到, 謝謝~
接下來我需要休整一段時間來準備新的系列了, 中間也可能會有一些不定期更新. 至于新系列是什么呢? 大家敬請期待
P.S. 公眾號即將改名為 算法精選, 更簡短和好記, 并且新加了一個暗號 劍指總結. 進入公眾號 算法精選, 在聊天框中回復 劍指總結 就能快速定位到這篇文章啦~

數字/數組

劍指 Offer 03. 數組中重復的數字 - leetcode 劍指 offer 系列

  • 下標排序, 不斷循環將值放到對應下標位置, 直到發現重復

劍指 Offer 04. 二維數組中的查找 - leetcode 劍指 offer 系列

  • 從左下角或右上角開始

劍指 Offer 11. 旋轉數組的最小數字 - leetcode 劍指 offer 系列

  • 二分查找變種, 相等時 e-=1

劍指 Offer 14- I. 剪繩子 - leetcode 劍指 offer 系列

  • 方法 1: 記憶化搜索, 存當前長度下的最大乘積
  • 方法 2: 找規律, 根據模 3 的結果分為 3 種情況
  • 劍指 Offer 14- II. 剪繩子 II - leetcode 劍指 offer 系列

  • 方法 1: 記憶化搜索, 存當前長度下的最大乘積
  • 方法 2: 找規律, 根據模 3 的結果分為 3 種情況
  • 劍指 Offer 17. 打印從 1 到最大的 n 位數 - leetcode 劍指 offer 系列

  • 方法 1: 取上限的下一個數
  • 方法 2: 利用字符串轉換取上限數
  • 方法 3: 利用循環求上限數
  • 劍指 Offer 21. 調整數組順序使奇數位于偶數前面 - leetcode 劍指 offer 系列

  • 方法 1: 使用額外數組, 雙指針一前一后
  • 方法 2: 雙指針原地交換, 向中間靠攏
  • 劍指 Offer 39. 數組中出現次數超過一半的數字 - leetcode 劍指 offer 系列

    • 投票法, 記錄當前候選者和票數

    劍指 Offer 40. 最小的 k 個數 - leetcode 劍指 offer 系列

  • 方法 1: 排序后選前 k 個
  • 方法 2: 快速排序思想
  • 方法 3: 長度為 k 的最大堆, heapq
  • 方法 4: 長度為 k 的最大堆, 自定義堆
  • 劍指 Offer 41. 數據流中的中位數 - leetcode 劍指 offer 系列

  • 方法 1: 左側最大堆+右側最小堆, heapq
  • 方法 2: 左側最大堆+右側最小堆, 自定義堆
  • 劍指 Offer 43. 1 ~ n 整數中 1 出現的次數 - leetcode 劍指 offer 系列

    • 十進制逐位處理, 統計當前位上為 1 的數字數目, 左右相乘, 根據和 1 的大小關系分三種情況

    劍指 Offer 44. 數字序列中某一位的數字 - leetcode 劍指 offer 系列

    • 找規律, 根據當前數字的位數, 判斷 n 所屬的范圍, 然后進一步定位對應的數字

    劍指 Offer 45. 把數組排成最小的數 - leetcode 劍指 offer 系列

    • 自定義排序, str(a)+str(b)<str(b)+str(a)
    • 方法 1: 快排
    • 方法 2: 自定義內置排序, 重寫 class 的__lt__, 然后 sorted(key = class)

    劍指 Offer 49. 丑數 - leetcode 劍指 offer 系列

  • 方法 1: 最小堆+集合, 類似 BFS 思路
  • 方法 2: 三指針, 三個有序序列合并, 等于最小值的指針后移, 保存丑數序列
  • 劍指 Offer 51. 數組中的逆序對 - leetcode 劍指 offer 系列

    • 歸并排序思路, 注意逆序對不是+1, 而是加左側剩余部分

    劍指 Offer 53 - I. 在排序數組中查找數字 I - leetcode 劍指 offer 系列

    • 二分查找左右邊界

    劍指 Offer 53 - II. 0 ~ n-1 中缺失的數字 - leetcode 劍指 offer 系列

  • 方法 1: 前 n 項和減去當前數組和
  • 方法 2: 二分查找, 只有兩種情況, 注意初始值/循環條件/如何移動
  • 劍指 Offer 57. 和為 s 的兩個數字 - leetcode 劍指 offer 系列

    • 雙指針一前一后, 向中間靠攏

    劍指 Offer 57 - II. 和為 s 的連續正數序列 - leetcode 劍指 offer 系列

  • 方法 1: 滑動窗口, 維護起點/終點/當前窗口和, 根據窗口和與 target 的關系進行移動, 終點最多只需要到target // 2 + 1
  • 方法 2: 找規律, 枚舉長度 le, 判斷 target 能否由該長度的數組求和所得, 注意 le 上限要滿足 le * (le + 1) // 2 <= target
  • 劍指 Offer 59 - I. 滑動窗口的最大值 - leetcode 劍指 offer 系列

    • 單調雙端隊列, 左邊存窗口最小值, 右邊存窗口最大值, 三部曲(移除左邊界=>加入右邊界=>加入結果)

    劍指 Offer 61. 撲克牌中的順子 - leetcode 劍指 offer 系列

    • 判斷兩個條件: 非 0 數是否有重復; 非 0 數的最大最小值差值是否小于 5

    劍指 Offer 63. 股票的最大利潤 - leetcode 劍指 offer 系列

    • 貪心法, 保存全局最小值, 然后每次都嘗試用當前數減去它, 求最大的差值

    劍指 Offer 64. 求 1+2+…+n - leetcode 劍指 offer 系列

  • 方法 1: 遞歸 + and 的短路特性
  • 方法 2: 前 n 項和+快速乘法, 二進制移位乘法, 同樣利用遞歸+短路特性
  • 劍指 Offer 66. 構建乘積數組 - leetcode 劍指 offer 系列

    • 左到右+右到左循環, 保存前綴積數組, 然后右到左保存后綴積, 與前一個前綴積相乘即可

    字符串

    劍指 Offer 05. 替換空格 - leetcode 劍指 offer 系列

  • 方法 1: split+join
  • 方法 2: 計算替換后長度, 預分配字符數組, 雙指針
  • 劍指 Offer 19. 正則表達式匹配 - leetcode 劍指 offer 系列

    • 記憶化搜索, 傳入 s/p 下標判斷它們之后的子串能否匹配, 注意*和.的特殊處理

    劍指 Offer 20. 表示數值的字符串 - leetcode 劍指 offer 系列

    • 分析各種字符(數字/e/+/-/./空格/其他字符), 按照 e 劃分為左右兩部分

    劍指 Offer 38. 字符串的排列 - leetcode 劍指 offer 系列

    • getNext() 找當前字符串字典序的下一個排列, 不斷循環直到回到初始字符串
    • getNext()內部邏輯: 找第一個小于后一個字符的字符, 并往后查找大于它且最小的字符進行交換, 后面部分翻轉后拼接

    劍指 Offer 48. 最長不含重復字符的子字符串 - leetcode 劍指 offer 系列

    • 滑動窗口+當前字符集合, 時刻更新 res

    劍指 Offer 50. 第一個只出現一次的字符 - leetcode 劍指 offer 系列

    • 字典記錄計數和首次出現的位置, 只需要遍歷一遍字符串

    劍指 Offer 58 - I. 翻轉單詞順序 - leetcode 劍指 offer 系列

  • 方法 1: split+join
  • 方法 2: 從右向左遍歷, 模擬整個過程
  • 劍指 Offer 58 - II. 左旋轉字符串 - leetcode 劍指 offer 系列

  • 方法 1: 字符串切片
  • 方法 2: 逐個添加, 先添加右半部分, 再添加左半部分
  • 劍指 Offer 67. 把字符串轉換成整數 - leetcode 劍指 offer 系列

    • 分析各種字符(空白字符/數字/正負號/其他字符), 使用 isHeadBlank 和 pos 兩個 flag

    鏈表

    劍指 Offer 06. 從尾到頭打印鏈表 - leetcode 劍指 offer 系列

  • 方法 1: 存數組然后反轉
  • 方法 2: 遞歸, 先調用子節點, 之后再加入結果數組中
  • 方法 3: 輔助棧存節點, 然后循環 pop 到數組中
  • 劍指 Offer 18. 刪除鏈表的節點 - leetcode 劍指 offer 系列

    • 哨兵節點, pre/cur 雙指針, cur 的值等于 val 之后就 pre.next = cur.next 然后 break

    劍指 Offer 22. 鏈表中倒數第 k 個節點 - leetcode 劍指 offer 系列

  • 方法 1: 存到數組里
  • 方法 2: 計數然后正向遍歷
  • 方法 3: 快慢指針, 快指針先遍歷 k 個然后慢指針從起點開始
  • 劍指 Offer 24. 反轉鏈表 - leetcode 劍指 offer 系列

  • 方法 1: 迭代, 雙指針, 畫圖模擬, 注意初始化
  • 方法 2: 遞歸, 返回頭尾
  • 方法 3: 遞歸, 只返回頭
  • 劍指 Offer 25. 合并兩個排序的鏈表 - leetcode 劍指 offer 系列

  • 方法 1: 迭代, 雙指針, 歸并排序, 哨兵節點
  • 方法 2: 遞歸, 傳入兩個節點, 返回歸并后的頭, 注意遞歸出口
  • 劍指 Offer 35. 復雜鏈表的復制 - leetcode 劍指 offer 系列

    • 兩次遍歷, 第一次遍歷得出映射關系, 第二次連接 random 部分

    劍指 Offer 52. 兩個鏈表的第一個公共節點 - leetcode 劍指 offer 系列

    • 雙指針, 遍歷到終點后換成另一個的頭繼續遍歷
    • 注意一定要遍歷到空節點之后, 下次再換頭, 不然會在沒有交點的情況時進入死循環!

    棧/隊列

    劍指 Offer 09. 用兩個棧實現隊列 - leetcode 劍指 offer 系列

    • stackIn 和 stackOut 棧, deleteHead 優先從 out 棧中 pop, 沒有的話再從 in 棧里面倒入 out 棧, 之后再 pop

    劍指 Offer 30. 包含 min 函數的棧 - leetcode 劍指 offer 系列

    • 額外單調遞減棧, 當前 push 值小于等于單調棧頂時 push, 當前 pop 值等于單調棧頂時 pop

    劍指 Offer 31. 棧的壓入、彈出序列 - leetcode 劍指 offer 系列

  • 方法 1: 使用棧模擬, 外層 for 循環 pushed 數組, 內層 while 循環判斷棧頂和當前 poped 下標位置
  • 方法 2: 將 pushed 數組作為棧, 額外記錄棧頂下標, 不使用額外空間
  • 劍指 Offer 59 - II. 隊列的最大值 - leetcode 劍指 offer 系列

    • 使用兩個 deque, 一個存正常的隊列, 另一個存單調隊列. push 時從一側循環移除更小值, pop 時如果和最大值相等則從另一側移除最大值

    劍指 Offer 07. 重建二叉樹 - leetcode 劍指 offer 系列

  • 方法 1: 遞歸, 傳入前序/中序起點和終點, 結合{值:中序下標}快速定位根節點的中序下標位置
  • 方法 2: 迭代, 棧存前面的節點, 分析當前節點在左還是在右
  • 劍指 Offer 26. 樹的子結構 - leetcode 劍指 offer 系列

    • 使用額外 match 方法傳入當前比較的兩個頭結點

    劍指 Offer 27. 二叉樹的鏡像 - leetcode 劍指 offer 系列

  • 方法 1: DFS 遞歸, 原地修改
  • 方法 2: BFS 遍歷, 無需按層遍歷, 原地修改當前 node 的左右節點
  • 劍指 Offer 28. 對稱的二叉樹 - leetcode 劍指 offer 系列

  • 方法 1: DFS 遞歸, 先生成鏡像再逐個比較
  • 方法 2: DFS 遞歸, 直接按照是否對稱比較
  • 方法 3: BFS 遍歷, 存左右兩個列表, 需要存空節點
  • 劍指 Offer 32 - I. 從上到下打印二叉樹 - leetcode 劍指 offer 系列

  • 方法 1: Python 列表+for 循環
  • 方法 2: 雙端隊列+while 循環
  • 劍指 Offer 32 - II. 從上到下打印二叉樹 II - leetcode 劍指 offer 系列

    • 按層 BFS, 記錄當前層長度 curlen

    劍指 Offer 32 - III. 從上到下打印二叉樹 III - leetcode 劍指 offer 系列

    • 按層 BFS+方向 flag

    劍指 Offer 33. 二叉搜索樹的后序遍歷序列 - leetcode 劍指 offer 系列

  • 方法 1: 遞歸, 分治法, 快速排序思想
  • 方法 2: 迭代, 維護單調遞增棧+根節點
  • 劍指 Offer 34. 二叉樹中和為某一值的路徑 - leetcode 劍指 offer 系列

  • 方法 1: DFS, 傳入當前節點/路徑/路徑和
  • 方法 2: BFS 存三元組(當前節點, 路徑, 路徑和)
  • 劍指 Offer 36. 二叉搜索樹與雙向鏈表 - leetcode 劍指 offer 系列

  • 方法 1: 遞歸分治法, 返回轉換后的鏈表頭和尾
  • 方法 2: 中序遍歷, 存 pre 節點, 與當前節點相連
  • 劍指 Offer 37. 序列化二叉樹 - leetcode 劍指 offer 系列

    • BFS, 存節點詳細信息[當前節點下標, 父節點下標, 父節點指向方向, 節點]

    劍指 Offer 54. 二叉搜索樹的第 k 大節點 - leetcode 劍指 offer 系列

    • 中序遍歷翻轉, 先右子樹再根再左子樹

    劍指 Offer 55 - I. 二叉樹的深度 - leetcode 劍指 offer 系列

  • 方法 1: DFS 遞歸求深度
  • 方法 2: BFS 求層數
  • 劍指 Offer 55 - II. 平衡二叉樹 - leetcode 劍指 offer 系列

    • 遞歸+全局標記, 邊求深度邊判斷, 返回深度, 全局變量標記當前是否平衡, 不平衡時直接返回 0

    劍指 Offer 68 - I. 二叉搜索樹的最近公共祖先 - leetcode 劍指 offer 系列

    • 根據根節點和 p/q 的值的關系來決定找到/向左/向右

    劍指 Offer 68 - II. 二叉樹的最近公共祖先 - leetcode 劍指 offer 系列

  • 方法 1: 遞歸, 返回 findp 和 findq, 注意祖先只能賦值一次, 這樣才是最近的祖先
  • 方法 2: 迭代, parent 字典+visit 集合, 找到一個在 v 集合的父節點后就直接返回, 這樣才是最近祖先
  • 劍指 Offer 12. 矩陣中的路徑 - leetcode 劍指 offer 系列

    • DFS, 找有效起點, 記錄當前路徑, 使用 visit 集合或改變原數組的值來標記已經遍歷的點

    劍指 Offer 13. 機器人的運動范圍 - leetcode 劍指 offer 系列

  • 方法 1: DFS + visit 集合
  • 方法 2: BFS + visit 集合
  • 方法 3: DP, 如果 rc 數位和大于 k, dp[r,c] = False, 否則 dp[r,c] = dp[r-1,c] or dp[r,c-1]
  • 劍指 Offer 29. 順時針打印矩陣 - leetcode 劍指 offer 系列

  • 方法 1: 維護當前下標和方向和 visit 集合, 逐個點遍歷
  • 方法 2: 按層遍歷, 剝洋蔥, 注意可能不存在向左或向上的部分
  • 位運算

    劍指 Offer 15. 二進制中 1 的個數 - leetcode 劍指 offer 系列

  • 方法 1: 轉二進制字符串統計
  • 方法 2: 循環移位統計
  • 方法 3: n &= n - 1
  • 方法 4: n -= n & -n
  • 劍指 Offer 16. 數值的整數次方 - leetcode 劍指 offer 系列

  • 方法 1: 二分分治法遞歸+記憶化搜索, 分別調用 n//2 和 n-n//2, 注意遞歸出口
  • 方法 2: 快速冪, 奇數乘入結果, 偶數不變, 然后冪右移, 數字乘以自身
  • 劍指 Offer 56 - I. 數組中數字出現的次數 - leetcode 劍指 offer 系列

    • 其他數字出現偶數次, 某兩個數字各出現奇數次 => 異或后根據異或結果的某個 1 分兩類

    劍指 Offer 56 - II. 數組中數字出現的次數 II - leetcode 劍指 offer 系列

    • 其他數字出現奇數次, 某個數字出現 1 次 => 按照二進制每一位統計次數, 然后對這個奇數次取模

    劍指 Offer 65. 不用加減乘除做加法 - leetcode 劍指 offer 系列

    • 利用 (a&b)<<1 求進位, 利用 a^b 求無進位和, 兩者賦值為新的 a 和 b 不斷循環, 直到進位為 0 即可, 注意 python 負數的處理

    動態規劃

    劍指 Offer 10- I. 斐波那契數列 - leetcode 劍指 offer 系列

    • 兩變量動態規劃, 存前兩個值, 當前值為它們的和

    劍指 Offer 10- II. 青蛙跳臺階問題 - leetcode 劍指 offer 系列

    • 兩變量動態規劃, 存前兩個值, 當前值為它們的和, 與上一題唯一區別是初始化不同

    劍指 Offer 42. 連續子數組的最大和 - leetcode 劍指 offer 系列

    • 動態規劃+空間優化, dp 存當前數字結尾的最大和, dp = max(dp + x, x)

    劍指 Offer 46. 把數字翻譯成字符串 - leetcode 劍指 offer 系列

    • 動態規劃, dp[i]代表末尾第 i 位時可以翻譯的字符串數目, dp[i] = dp[i-2] (使用2個字符) + dp[i-1] (使用1個字符) if 10 <= int(s[i - 1:i + 1]) <= 25 else dp[i-1]

    劍指 Offer 47. 禮物的最大價值 - leetcode 劍指 offer 系列

    • 動態規劃, dp[r,c]代表格子(r,c)所能獲得的最大價值, dp[r,c] = max(dp[r-1,c], dp[r,c-1]) + grid[r][c] (r-1>=0 and c-1>=0)

    劍指 Offer 60. n 個骰子的點數 - leetcode 劍指 offer 系列

    • 動態規劃+空間優化, dp 存當前骰子數下面的所有可能取值的概率, 推導出骰子數+1 的所有概率

    劍指 Offer 62. 圓圈中最后剩下的數字 - leetcode 劍指 offer 系列

    • 動態規劃+空間優化, 反推, dp[n, m] = (dp[n-1,m]+m)%n, 遍歷[2,n], 注意推導過程

    大家可以在下面這些地方找到我~
    我的知乎專欄
    我的頭條號
    我的 CSDN
    我的 Leetcode
    我的牛客網博客
    我的公眾號: 算法精選, 歡迎大家掃碼關注~

    新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美综合成人 | 欧美三级视频在线 | 久久99精品国产麻豆婷婷 | 人妻少妇偷人精品久久久任期 | 免费看a视频 | 午夜久久久 | 国产超碰av| 色鬼综合 | 国产一级片久久 | 绯色av蜜臀vs少妇 | 中文字幕一区在线播放 | 污污的视频软件 | 成人网在线 | www.久久99| 黄色动漫免费在线观看 | 91伊人久久 | 天天射天天干天天 | 国产欧美精品国产国产专区 | 都市激情自拍 | 天天5g天天爽免费观看 | 天天干网| 欧美图片一区二区 | 成人免费在线小视频 | 黄色福利片 | 免费毛片看| 国产欧美日韩综合精品一区二区三区 | 亚州视频在线 | 亚洲精品在线免费看 | 亚洲成人精品视频 | 成人黄色网址在线观看 | 麻豆av免费 | 日本黄色xxx| 久久韩日 | 黄色福利社 | 亚洲一区欧美 | 欧美国产高潮xxxx1819 | 五月导航| 亚洲欧美日本国产 | 成人国产精品免费观看视频 | 少妇高潮视频 | 女女h百合无遮羞羞漫画软件 | 偷偷操av | 亚洲国产欧美日韩在线 | av狠狠| 51精品国自产在线 | 欧美日韩在线高清 | 91成人免费网站 | 99视频在线免费观看 | 国产视频一级 | 欧美色欧美 | 国产av剧情一区二区三区 | 欧美婷婷六月丁香综合色 | 欧美日韩国产二区 | 殴美一区二区 | eeuss一区| yjizz视频| 日本五十路在线 | avtt在线观看 | 久久久久久久九九九九 | 一个色的综合 | 午夜av一区二区 | 国产精品一区无码 | 男女在楼梯上高潮做啪啪 | 波多野结衣免费看 | 91免费看大片| 亚洲免费观看视频 | 国产又爽又黄的视频 | 免费看日产一区二区三区 | 亚洲色图日韩精品 | 一级黄色影院 | 一级片大片 | 夜夜嗨av一区二区三区四区 | 日韩成人激情 | 国产成人精品无码高潮 | 一区二区三区高清不卡 | 国产精品hd| 欧美亚洲国产成人 | 欧美激情片在线观看 | www.avcao | 韩日激情视频 | 久久久久国产精品一区二区 | jizz中国少妇高潮出水 | 天天舔日日操 | 午夜tv| 风韵少妇spa私密视频 | 国内久久精品视频 | 97精品一区 | 91网址入口| 韩国三级hd中文字幕有哪些 | a级在线观看 | 亚洲国产婷婷香蕉久久久久久99 | 久艹在线观看 | 一级黄色网址 | 99视频在线免费观看 | 日本乱码视频 | www.日| 动漫美女放屁 | 亚洲图片一区 | 国内精品免费 |