成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說說你對分而治之、動態規劃的理解?區別?

開發 開發工具
分而治之是算法設計中的一種方法,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并.

[[429033]]

一、分而治之

分而治之是算法設計中的一種方法,就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并

關于分而治之的實現,都會經歷三個步驟:

  • 分解:將原問題分解為若干個規模較小,相對獨立,與原問題形式相同的子問題
  • 解決:若子問題規模較小且易于解決時,則直接解。否則,遞歸地解決各子問題
  • 合并:將各子問題的解合并為原問題的解

實際上,關于分而治之的思想,我們在前面已經使用,例如歸并排序的實現,同樣經歷了實現分而治之的三個步驟:

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

同樣關于快速排序的實現,亦如此:

分:選基準,按基準把數組分成兩個字數組

解:遞歸地對兩個字數組進行快速排序

合:對兩個字數組進行合并

同樣二分搜索也能使用分而治之的思想去實現,代碼如下:

  1. function binarySearch(arr,l,r,target){ 
  2.     if(l> r){ 
  3.         return -1; 
  4.     } 
  5.     let mid = l + Math.floor((r-l)/2) 
  6.     if(arr[mid] === target){ 
  7.         return mid; 
  8.     }else if(arr[mid] < target ){ 
  9.         return binarySearch(arr,mid + 1,r,target) 
  10.     }else
  11.         return binarySearch(arr,l,mid - 1,target) 
  12.     } 

二、動態規劃

動態規劃,同樣是算法設計中的一種方法,是一種在數學、管理科學、計算機科學、經濟學和生物信息學中使用的,通過把原問題分解為相對簡單的子問題的方式求解復雜問題的方法

常常適用于有重疊子問題和最優子結構性質的問題

簡單來說,動態規劃其實就是,給定一個問題,我們把它拆成一個個子問題,直到子問題可以直接解決

然后呢,把子問題答案保存起來,以減少重復計算。再根據子問題答案反推,得出原問題解的一種方法。

一般這些子問題很相似,可以通過函數關系式遞推出來,例如斐波那契數列,我們可以得到公式:當 n 大于 2的時候,F(n) = F(n-1) + F(n-2) ,

f(10)= f(9)+f(8),f(9) = f(8) + f(7)...是重疊子問題,當n = 1、2的時候,對應的值為2,這時候就通過可以使用一個數組記錄每一步計算的結果,以此類推,減少不必要的重復計算

適用場景

如果一個問題,可以把所有可能的答案窮舉出來,并且窮舉出來后,發現存在重疊子問題,就可以考慮使用動態規劃

比如一些求最值的場景,如最長遞增子序列、最小編輯距離、背包問題、湊零錢問題等等,都是動態規劃的經典應用場景

關于動態規劃題目解決的步驟,一般如下:

  • 描述最優解的結構
  • 遞歸定義最優解的值
  • 按自底向上的方式計算最優解的值
  • 由計算出的結果構造一個最優解

三、區別

動態規劃算法與分治法類似,其基本思想也是將待求解問題分解成若干個子問題,先求解子問題,然后從這些子問題的解得到原問題的解

與分治法不同的是,適合于用動態規劃求解的問題,經分解得到子問題往往「不是互相獨立」的,而分而治之的子問題是相互獨立的

若用分治法來解這類問題,則分解得到的子問題數目太多,有些子問題被重復計算了很多次

如果我們能夠保存已解決的子問題的答案,而在需要時再找出已求得的答案,這樣就可以避免大量的重復計算,節省時間

綜上,可得:

動態規劃:有最優子結構和重疊子問題

分而治之:各子問題獨立

參考文獻

https://baike.baidu.com/item/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/529408

 

https://juejin.cn/post/6951922898638471181

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-08-09 07:47:40

Git面試版本

2021-11-25 10:18:42

RESTfulJava互聯網

2025-04-09 00:00:00

2024-07-25 18:20:03

2020-12-01 08:47:36

Java異常開發

2020-06-12 15:50:56

options前端服務器

2020-08-17 07:40:19

消息隊列

2021-08-17 07:15:16

Git RebaseGit Merge面試

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-11-08 11:32:01

觀察

2021-09-16 07:52:18

算法應用場景

2021-09-07 08:33:27

JavaScript TypeScript 函數

2019-05-10 10:50:04

Spring AOPJDK動態代理CGLIB動態代理

2021-11-05 07:47:56

代理模式對象

2020-12-04 06:27:04

序列化面試官Java

2021-11-09 08:51:13

模式命令面試

2021-11-02 22:04:58

模式

2021-11-10 07:47:49

組合模式場景

2022-02-21 17:24:18

序列化對象存儲

2021-11-04 06:58:32

策略模式面試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠操电影 | 亚洲国产精品成人久久久 | 成人在线观看免费 | 国产精品久久久久久久久久久免费看 | 狼色网 | 精品视频一区二区三区 | 国产你懂的在线观看 | 亚卅毛片 | 精品一区在线 | 免费在线观看毛片 | 免费在线观看成年人视频 | 国产日韩精品在线 | 国产精品无码永久免费888 | 国产特级毛片 | 亚洲精品九九 | 亚洲精品一区二区在线观看 | 欧美极品少妇xxxxⅹ免费视频 | 午夜一级黄色片 | www.色午夜.com | 亚洲欧美日韩中文在线 | 午夜欧美 | 91久久精品国产91久久 | 欧美日韩视频在线 | 欧美伊人久久久久久久久影院 | 日韩欧美精品在线 | 久久久国 | 国产精品视频网 | 国产精品毛片无码 | 日韩成人免费av | 羞羞视频免费观看入口 | 国产一区二区三区高清 | 在线观看中文字幕视频 | 91视频a| 久久999| 涩色视频在线观看 | 美人の美乳で授乳プレイ | 久久在线看 | 欧美一级欧美三级在线观看 | 久久久一区二区三区四区 | 91免费福利在线 | 成人激情视频在线观看 |