记忆化搜索

记忆化搜索

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

题目链接 数不清的数

原本的代码

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

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

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

相关推荐
元亓亓亓8 分钟前
LeetCode热题100--64. 最小路径和--中等
算法·leetcode·职场和发展
mit6.82413 分钟前
回溯+位运算|前缀和优化背包
算法
努力学算法的蒟蒻23 分钟前
day49(12.30)——leetcode面试经典150
算法·leetcode·面试
天赐学c语言24 分钟前
12.30 - 合并区间 && C++中class和C语言中struct的区别
c语言·c++·算法·leecode
有一个好名字40 分钟前
力扣-递增的三元子序列
算法·leetcode·职场和发展
Boop_wu43 分钟前
[Java 数据结构] 图(1)
数据结构·算法
无尽的罚坐人生1 小时前
hot 100 128. 最长连续序列
数据结构·算法·贪心算法
Savior`L1 小时前
基础算法:模拟、枚举
数据结构·c++·算法
软件算法开发1 小时前
基于蘑菇繁殖优化的LSTM深度学习网络模型(MRO-LSTM)的一维时间序列预测算法matlab仿真
深度学习·算法·matlab·lstm·时间序列预测·蘑菇繁殖优化·mro-lstm
雪花desu1 小时前
【Hot100-Java中等】LeetCode 11. 盛最多水的容器:双指针法的直观理解与数学证明
算法·leetcode