记忆化搜索

记忆化搜索

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

题目链接 数不清的数

原本的代码

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

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

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

相关推荐
网络工程小王4 分钟前
【大模型(LLM)的业务开发】学习笔记
人工智能·算法·机器学习
y = xⁿ6 分钟前
【Leet Code 】滑动窗口
java·算法·leetcode
WBluuue9 分钟前
数据结构与算法:二项式定理和二项式反演
c++·算法
nianniannnn9 分钟前
力扣104.二叉树的最大深度 110. 平衡二叉树
算法·leetcode·深度优先
_深海凉_19 分钟前
LeetCode热题100-只出现一次的数字
算法·leetcode·职场和发展
nianniannnn37 分钟前
力扣206.反转链表 92.反转链表II
算法·leetcode·链表
澈20744 分钟前
哈希表实战:从原理到手写实现
算法·哈希算法
旖-旎1 小时前
哈希表(存在重复元素||)(4)
数据结构·c++·算法·leetcode·哈希算法·散列表
Run_Teenage1 小时前
Linux:认识信号,理解信号的产生和处理
linux·运维·算法
無限進步D1 小时前
蓝桥杯赛前刷题
c++·算法·蓝桥杯·竞赛