这道题的归类是记忆化搜索,我开始看到这题马上就想打一个DP,解完以后看了看题解,发现了一种好的思路。
用这种思路,我在排除两种特例(即 k = = 0 k==0 k==0和 s h o r t e r = = l o n g e r shorter==longer shorter==longer)之后,定义一个长度为 k + 1 k+1 k+1的vector,利用式子 n u m s [ i ] + = k ∗ s h o r t e r + i ∗ d i f f e r nums[i] += k*shorter + i*differ nums[i]+=k∗shorter+i∗differ,循环一遍就能达到 O ( n ) O(n) O(n)。
提交代码class Solution {
public:
vector divingBoard(int shorter, int longer, int k) {
if (k == 0) {
return vector {};
}
if (shorter == longer) {
return vector {shorter*k};
}
vector nums(k+1);
int differ = longer-shorter;
for (int i = 0; i
关注
打赏
- 【Linux】Ubuntu20.04安装和卸载MySQL8
- 【Linux】Ubuntu 20.04 报错 curl: (23) Failure writing output to destination 的解决方法
- 【Java】JUnit 4.13.2 警告 ‘assertEquals(double, double)‘ is deprecated 的解决方法
- 【JavaScript】处理 @parcel/transformer-js: Browser scripts cannot have imports or exports.
- 【Node.js】Windows环境安装配置NVM和Node.js
- 【Python】处理TypeError: Plain typing.NoReturn is not valid as type argument
- 【Python】Matplotlib可视化50例
- 【C语言】C语言修改MySQL数据库
- 【Java】从默认包导入类和对象报错的解决方法
- 【Java】panel.getGraphics()报错空指针异常的解决方法