萌新如何学好动态规划

如大家所了解的,​动态规划问题一直是大厂面试时最频繁出现的算法题,主要原因在于此类问题灵活度高,思维难度大,没有很明显的套路做法。

问题分析

首先思考最暴力的解法。

枚举所有区间,暴力累加区间中宝石的价值,最后选一个价值最大的区间。时间复杂度

显然有些无法接受,因此想想有没有办法优化,比如优化掉暴力累加的部分。

优化 1.0

仔细思考不难发现,我们可以枚举区间右端点,然后固定右端点,左端点不断向左移动,边移动边累加,就可以将时间复杂度优化到 。

例如我们固定右端点是 3,那么左端点就从 3 移动到 1,边移动边累加答案,就可以在移动过程中计算出区间【3,3】、【2,3】 、【1,3】 的答案了。因此枚举所有区间右端点,即可在 时间复杂度内找到答案。

但是 时间还是有些过高了,因此思考有没有办法继续优化呢?

相关推荐
渡过晚枫11 小时前
[第十四届蓝桥杯/java/算法]国赛A——跑步计划
算法
hanlin0311 小时前
刷题笔记:力扣第17题-电话号码的字母组合
笔记·算法·leetcode
不是株11 小时前
算 法
数据结构·python·算法
云泽80811 小时前
蓝桥杯算法精讲:从宏观角度重新认识递归
算法·职场和发展·蓝桥杯
自信1504130575911 小时前
插入排序算法
c语言·数据结构·算法·排序算法
阿Y加油吧11 小时前
力扣打卡day09——缺失的第一个正数、矩阵置零
数据结构·算法·leetcode
2301_8184190111 小时前
C++中的状态模式实战
开发语言·c++·算法
仰泳的熊猫11 小时前
题目2576:蓝桥杯2020年第十一届省赛真题-解码
数据结构·c++·算法·蓝桥杯
CSDN_kada11 小时前
杭电网安复试编程Day23
c++·考研·算法
灰色小旋风11 小时前
力扣16 最接近的三数之和(C++)
数据结构·c++·算法·leetcode