记忆化搜索

记忆化搜索

在递归过程中,有许多分支被反复计算,会大大降低算法的执行效率。用记忆搜索,讲已经计算出来的结果保存起来,以后需要用到直接去除结果,避免重复运算。

题目链接 数不清的数

原本的代码

外面一层t的while循环,里面再计算1-x的的二进制中1的和,时间复杂度是on的三次方,时间复杂度太大了。

看题目的数据范围,只有31个数字,可以讲1-31的全部计算出来保存到数组中去,下面while直接从数组中取数字即可,减少了一层的时间复杂度。

dp[i]就是以i结尾的二进制数字个数,题目需要求的是0-2的n次方

相关推荐
少许极端1 分钟前
算法奇妙屋(三十一)-递归、回溯与剪枝的综合问题 4
算法·剪枝·回溯·递归
mjhcsp2 分钟前
C++随机调整(Random Adjustment):优化算法的核心随机策略
java·c++·算法
Yupureki2 分钟前
《C++实战项目-高并发内存池》6.内存释放流程
c语言·开发语言·数据结构·c++·算法·哈希算法
charlie1145141915 分钟前
嵌入式现代C++开发——三路比较运算符
开发语言·c++·学习·算法·嵌入式·编程指南
2401_900151545 分钟前
C++编译期正则表达式
开发语言·c++·算法
倾心琴心5 分钟前
【agent辅助pcb routing coding学习】实践1 kicad pcb 格式讲解
算法·agent·pcb·eda·routing
仙俊红6 分钟前
LeetCode493周赛T3,前后缀分解
数据结构·算法·leetcode
_日拱一卒9 分钟前
LeetCode(力扣):二叉树的前序遍历
java·数据结构·算法·leetcode
倾心琴心9 分钟前
【agent辅助pcb routing coding学习】实践5 kicad类按类别理解
算法·agent·pcb·eda·routing
Frostnova丶13 分钟前
LeetCode 50. Pow(x, n)
算法·leetcode