代码编织梦想

leetcode:1815. 得到新鲜甜甜圈的最多组数【dfs记忆化 + 回溯 + java记忆化学习】-爱代码爱编程

目录 题目截图题目分析ac codejava 记忆化学习总结 题目截图 题目分析 暴力解法就是2 ** n可能会超时但是先1后2和先2后1对后面的结果是一样的,因此可以考虑记忆化cache每次的操作就

leetcode:1259. 不相交的握手【卡特兰数】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 先随便连一条线,然后划分成两个区域这两个区域的点数个数必定是偶数即可dp[i]:2 * i个人的方案dp[3] = dp[1] * dp[1

leetcode:188. 买卖股票的最佳时机 iv【股票问题 + 二维状态】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 # T123的扩展 # dp[i][k][0]: 前i天第k个交易的买入 # dp[i][k][1]: 前i天第k个

leetcode:123. 买卖股票的最佳时机 iii【股票问题 + 滚动数组dp】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 两次交易:四个状态前i个的四个状态可以用滚动数组buy1 -> sell1 -> buy2 -> sell2股票类问题的买

leetcode:1819. 序列中不同最大公约数的数目【数论 + 逆向思维】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 子序列太多了,不可能遍历只能遍历可能的最大公约数g对于一个公约数g,如果某个子序列最大公约数是g那么这个序列一定都是g的倍数,因此这个序列的

leetcode:753. 破解保险箱【dfs + 回溯】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 我们假设它可以在最短长度完成也就是在n + k ** n - 1的长度完成这样就可以进行dfs,然后保证当前的长度为n的结果都是未出现的即可

leetcode:剑指 offer ii 033. 变位词组【java排序】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 根据排序后的str得到tmp用tmp作为key,value是一个ArrayList<String>先通过toCharArray将

leetcode:2528. 最大化城市的最小供电站数目【二分 + 贪心 + 差分数组 + 前缀和】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 最大化最小供电站 = 二分先通过前缀和得到一开始的供电数然后假设最小供电数是limit看看能否在最多加k个的时候符合条件check函数的关键

leetcode:1707. 与数组中元素的最大异或值【01trie + 离线查询】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 本质还是一堆数跟某一个的最大异或指使用01Trie数+离线查询即可! ac code MAXN_BIT = 30 # 所有nums[i]

leetcode:421. 数组中两个数的最大异或值【01字典树解决异或问题】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 典型01字典树套路解决最大异或问题!完善insert和queryMax的方法query的方法遍历val的每一位,能选相异的优先选,否则选相同

leetcode:1803. 统计异或值在范围内的数对有多少【01字典树模版解决异或相关问题】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 朴素做法要平方我们注意到,其实如果对于每一位而言,它其实是个带有限制的计数问题固定a[j],我们想看看前面有多少个a[i]可以满足a[i]

leetcode:208. 实现 trie (前缀树)【前缀树python模版!】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 children记录下一个的元素初始都是26个None,isEnd记录是否为结尾insert就一个个加进来,isEnd最后设置为truese

leetcode:剑指 offer ii 031. 最近最少使用缓存【linkhashmap实现lru算法】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 实现LRU算法继承LinkHashMap即可需要一个removeEldestEntry,只要size() > capacity即可

leetcode:6272. 好分区的数目【思维转换(正难则反) + dp定义 + 背包问题 + 选or不选】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 先特判,如果sum(nums) < 2 * k显然不可能成功!返回0出现Mod大概率就是dp1000的话提示我们用平方复杂度的dp这

leetcode:1739. 放置盒子【找规律!】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 样例有规律,它希望我们先按每层1, 3, 6这样叠起来,比如能跌i层那么至少有i * ( i + 1) // 2个底层多出来的东西再做考虑

leetcode:1799. n 次操作后的最大分数和【dfs + cache】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 看到这个n的范围,是不是想遍历所有2个2个的组合确实可以!那就用dfs + cache完成dfs(rest)表示剩下rest的时候的最大分

leetcode:剑指 offer ii 028. 展平多级双向链表【用arraylist开挂】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 利用dfs把展开后的存到一个list里面即可先对child进行dfs,再对next进行dfs ac code /* // Definit

leetcode:1754. 构造字典序最大的合并字符串【贪心】-爱代码爱编程

目录 题目截图题目分析javapython总结 题目截图 题目分析 简单地比较当前位置不行!要看后面所有的substring哪个更大,就选哪个!因为这样才可以引导指针走向较大的一方! java c

leetcode:剑指 offer ii 020. 回文子字符串的个数【经典平方做法 + 分奇偶考虑起点】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 dp[i][j]表示从i到j是否为回文考虑i = j, j = i + 1作为起点即可 ac code class Solution {

leetcode:剑指 offer ii 019. 最多删除一个字符得到回文【双指针+一道没这么简单的的简单题】-爱代码爱编程

目录 题目截图题目分析ac code总结 题目截图 题目分析 无脑做法平方复杂度凉凉从两边往中间双指针check一旦left和right不等,考虑去掉当前left或者right,再判断里面的是否回文,只