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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

(十二)算法设计思想之“分而治之”

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (十二)算法设计思想之“分而治之” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法設計思想之“分而治之”

  • 分而治之是是什么
  • 場景一:歸并排序
  • 場景二:快速排序
  • LeetCode:374.猜數字大小
  • LeetCode:226.翻轉二叉樹
  • LeetCode:100.相同的樹
  • LeetCode:101.對稱二叉樹
  • 思考題

分而治之是是什么

分而治之是算法設計中的一種方法
它將一個問題成多個和原問題相似的小問題,遞歸解決小問題,再將結果并以解決原來的問題
應用場景:歸并排序、快速排序、二分搜索、翻轉二叉樹…

場景一:歸并排序

分:把數組從中間一分為二
解:遞歸地對兩個子數組進行歸并排序
合:合并有序子數組

場景二:快速排序

分:選基準,按基準把數組分成兩個子數組
解:遞歸地對兩個子數組進行快速排序
合:對兩個子數組進行合并

LeetCode:374.猜數字大小


解題思路
二分搜索,同樣具備“分、解、合”的特性
考慮選擇分而治之

解題步驟
分:計算中間元素,分割數組
解:遞歸地在較大或者較小子組件進行二分搜索
合:不需要此步,因為在子數組中搜到就返回了

時間復雜度O(logn),空間復雜度是O(logn)

LeetCode:226.翻轉二叉樹


解題思路
先翻轉左右子樹,再將子樹換個位置
符合“分、解、合”特性
考慮選擇分而治之
解題步驟
分:獲取左右子樹
解:遞歸地翻轉左右子樹
合:將翻轉后的左右子樹換個位置放在根節點上

時間復雜度O(n),n是樹的節點數,空O(樹的高度),最壞的情況是O(n)

LeetCode:100.相同的樹


解題思路
兩個樹:根節點的值相同,左子樹相同,右子樹相同
符合“分、解、合”特性
考慮選擇分而治之
解題步驟
分:獲取兩個樹的左子樹和右子樹
解:遞歸地判斷兩個樹的左子樹是否相同,右子樹是否相同
合:將上述結果合并,如果根節點的值也相同,樹就相同


時間復雜度O(n),n是樹的節點數,空間復雜度最壞情況是O(n),好的情況是O(logN)

LeetCode:101.對稱二叉樹


解題思路
轉化為:左右子樹是否鏡像
分解為:樹1的左子樹和樹2的右子樹是否鏡像,樹1的右子樹和樹2的左子樹是否鏡像
符合“分、解、和”特性,考慮選擇分而治之
解題步驟
分:獲取兩個樹的左子樹和右子樹
解:遞歸地判斷樹1的左子樹和樹2的右子樹是否鏡像,樹1的右子樹和樹2的左子樹是否鏡像
合:如果上述都成立,且根節點值也相同,兩個樹就鏡像

時間復雜度O(n),n是樹的節點數,空間復雜度最壞情況是O(n),好的情況是O(logN)

思考題

1、說出分而治之算法的套路步驟
2、用分而治之的套路步驟,描述切西瓜的過程,無需Coding

總結

以上是生活随笔為你收集整理的(十二)算法设计思想之“分而治之”的全部內容,希望文章能夠幫你解決所遇到的問題。

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