DP系列:


1,数据结构

数据结构不仅取决于问题研究的对象本身的数据结构,也取决于在这个对象上,我们需要什么样的形式的一个答案。

例如:力扣OJ 740. 删除与获得点数

同样是数组,我们可以寻求很多种不同形式不同结构的答案。

常规的是一种基于顺序的,或者基于子序列的答案,而本题是基于数值的。

也就是说,我们访问了一个元素之后,要立即删除和他数值隔1的那些数,这个当然不能总靠暴力枚举了,

对于这样的一种形式的问题,我们的数据结构也就需要按照数值来排序,

而实现此目的的方式主要有两种,一种是基于数值的排序,比如快速排序,比如sort函数,一种是基于数值的排序,比如计数排序。

我在力扣OJ 740. 删除与获得点数 中使用的是计数,因为题目规定了每个数不超过10000


2,算法——指针滑动和动态规划

为什么力扣OJ 1248. 统计「优美子数组」是指针滑动,而力扣OJ 1218. 最长定差子序列 不是呢?

依然是由问题的形式决定的。

前者,连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」,这个题目探讨的对象是连续的一段,

后者,等差子序列是一种基于数值的定义,我们不知道能构成等差数列的下一个数在哪,我们只知道这个数是多少。