算法——暴力+优化

本质

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

例题

  • 首先容易想到的就是组合型动态规划,可是由于在求以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

相关推荐
Free Tester3 小时前
如何判断 LeakCanary 报告的严重程度
java·jvm·算法
zyq99101_14 小时前
DFS算法实战:经典例题代码解析
python·算法·蓝桥杯·深度优先
智者知已应修善业4 小时前
【51单片机单按键切换广告屏】2023-5-17
c++·经验分享·笔记·算法·51单片机
广州灵眸科技有限公司4 小时前
为RK3588注入澎湃算力:RK1820 AI加速卡完整适配与评测指南
linux·网络·人工智能·物联网·算法
qinian_ztc4 小时前
frida 14.2.18 安装报错解决
算法·leetcode·职场和发展
AI应用实战 | RE4 小时前
012、检索器(Retrievers)核心:从向量库中智能查找信息
人工智能·算法·机器学习·langchain
凤年徐4 小时前
C++手撕红黑树:从0到200行,拿下STL map底层核心
c++·后端·算法
Thomas.Sir4 小时前
AI 医疗之罕见病/疑难病辅助诊断系统从算法到实现【表型驱动与知识图谱推理】
人工智能·算法·ai·知识图谱
tankeven5 小时前
动态规划专题(03):区间动态规划从原理到实践(未完待续)
c++·算法·动态规划