ACM總結——動態規劃(2)問題本身的固有屬性決定數據結構和算法

DP系列:

https://blog.csdn.net/nameofcsdn/article/details/106417240

 

1,數據結構

數據結構不僅取決於問題研究的對象本身的數據結構,也取決於在這個對象上,我們需要什麼樣的形式的一個答案。

例如:

力扣OJ 740. 刪除與獲得點數 https://blog.csdn.net/nameofcsdn/article/details/106436711

同樣是數組,我們可以尋求很多種不同形式不同結構的答案。

常規的是一種基於順序的,或者基於子序列的答案,而本題是基於數值的。

也就是說,我們訪問了一個元素之後,要立即刪除和他數值隔1的那些數,這個當然不能總靠暴力枚舉了,

對於這樣的一種形式的問題,我們的數據結構也就需要按照數值來排序,

而實現此目的的方式主要有兩種,一種是基於數值的排序,比如快速排序,比如sort函數,一種是基於數值的排序,比如計數排序。

我在力扣OJ 740. 刪除與獲得點數 https://blog.csdn.net/nameofcsdn/article/details/106436711中使用的是計數,因爲題目規定了每個數不超過10000

 

2,算法——指針滑動和動態規劃

爲什麼力扣OJ 1248. 統計「優美子數組」https://blog.csdn.net/nameofcsdn/article/details/106396339是指針滑動,

而力扣OJ 1218. 最長定差子序列 https://blog.csdn.net/nameofcsdn/article/details/106418150不是呢?

依然是由問題的形式決定的。

前者,連續 子數組中恰好有 k 個奇數數字,我們就認爲這個子數組是「優美子數組」,這個題目探討的對象是連續的一段,

後者,等差子序列是一種基於數值的定義,我們不知道能構成等差數列的下一個數在哪,我們只知道這個數是多少。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章