算法——暴力+优化

本质

这类型题本质就是基于暴力解法,优化其时间复杂度

例题

  • 首先容易想到的就是组合型动态规划,可是由于在求以i位置为结尾的最长递增子序列的时候要遍历以0-i-1位置为结尾最长递增子序列的长度,所以时间复杂度会达到n^2。

  • 要求以i为结尾的最长递增子序列,实际上就是求以0 - i-1的元素A谁小于i位置的元素并且以其为结尾的最长递增子序列的长度L最长。对于同一L的,我们只需要保留A较小的哪个(因为同样的效果,能接在它后面肯定更容易),所以每种L的A只有一个,而L为n+1的A一定是接在了L为n的A上,因此L为n+1的A一定比L为n的A大,因此,按照L大小来排列,所有A组成有序的序列,因此我们可以通过二分查找算法(logn)找到i位置新元素最多能插入到谁后面,从而得到长度。也将时间复杂度降低到了n*logn。

  • 容易想到的就是暴力枚举第i天卖出可能得到最大利润,从中取最大值。一般思路就是每次枚举第i个位置,都要遍历0-i-1求一个最小值,所得的差就是最大利润。时间复杂度是n^2

  • 而我们做出的优化就是在枚举第i天卖出的途中就更新0 - i-1中的最小值,从而将时间复杂度降低到n

相关推荐
是main不是漫1 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
深圳市快瞳科技有限公司2 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
专注仿真4 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
小豆庄4 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
Tisfy4 小时前
LeetCode 3882.网格图中最小异或路径:动态规划
算法·leetcode·动态规划
D e re k ZH5 小时前
P5025 [SNOI2017] 炸弹
c++·算法
A boy CDEF girl5 小时前
算法题专栏:优选算法
数据结构·算法·leetcode
没落之王5 小时前
三易五行看宋朝的三界确立
大数据·人工智能·算法
坤坤子吖6 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
Js.Tx7 小时前
【具体数学 Concrete Mathematics】2.1.5 一般性的方法
算法·具体数学