记忆化搜索

记忆化搜索

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

题目链接 数不清的数

原本的代码

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

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

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

相关推荐
悠哉清闲2 分钟前
C++ 指针与引用
java·c++·算法
然我28 分钟前
链表指针玩不转?从基础到双指针,JS 实战带你破局
前端·数据结构·算法
EndingCoder36 分钟前
算法与前端的可访问性
前端·算法·递归·树形结构
ysa0510301 小时前
竞赛常用加速技巧#模板
c++·笔记·算法
7 971 小时前
C语言基础知识--文件的顺序读写与随机读写
java·数据结构·算法
2401_841003981 小时前
Kubernetes 资源管理全解析
算法·贪心算法
☆璇2 小时前
【数据结构】排序
c语言·开发语言·数据结构·算法·排序算法
艾莉丝努力练剑5 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
_殊途7 小时前
《Java HashMap底层原理全解析(源码+性能+面试)》
java·数据结构·算法
珊瑚里的鱼10 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法