记忆化搜索

记忆化搜索

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

题目链接 数不清的数

原本的代码

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

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

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

相关推荐
Donald_wsn7 小时前
牛客 栈和排序 C++
数据结构·c++·算法
沃达德软件7 小时前
智慧警务实战模型与算法
大数据·人工智能·算法·数据挖掘·数据分析
LYFlied7 小时前
LeetCode热题Top100:核心算法思想与前端实战套路
前端·算法·leetcode·面试·算法思想·算法套路·解题公式
coderxiaohan7 小时前
【C++】红黑树的实现
数据结构·c++·算法
AganTee7 小时前
儿童编程学什么内容?怎么学?(附3个实用工具)
算法·青少年编程·推荐算法
coderxiaohan7 小时前
【C++】封装红黑树实现mymap和myset
数据结构·c++·算法
源来有你_7 小时前
排序总结和练习
数据结构·算法·排序算法
迷途之人不知返7 小时前
排序算法锦集(一)
算法·排序算法
500847 小时前
鸿蒙 Flutter 国密算法应用:SM4 加密存储与数据传输
分布式·算法·flutter·华为·wpf·开源鸿蒙
程序员-King.7 小时前
day120—二分查找—统计公平数对的数目(LeetCode-2563)
算法·leetcode·二分查找·双指针