一,最长回文串1.题目给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例1:输入:s="bbbab"输出:4解释:一个可能的最长回文子序列为"bbbb"。示例2:输入:s="cbbd"输出:2解释:一个可能的最长回文子序列为"bb"。提示:1s 仅由小写英文字母组成2.题目接口classSolution{public:intlongestPalindromeSubseq(strings){}}; 3.解题思路及其代码 在思考这道题时,我们先想到的可能是dp[i]来作状态转移方程,表
第一题:长度最小的子数组力扣(LeetCode)官网-全球极客挚爱的技术成长平台思路:第一想法肯定时暴力枚举,枚举数组任何一个元素,把他当起始位置,然后从起始位置找最短区间,使得区间和大于等于目标值利用两个嵌套for循环,如果符合条件就记录,然后更新结果,返回classSolution{public:intminSubArrayLen(inttarget,vector&nums){//记录结果intret=INT_MAX;intn=nums.size();//枚举出所有满⾜和⼤于等于target的⼦数组[start,end]//由于是取到最⼩,因此枚举的过程中要尽量让数组的⻓度最⼩//枚举开始
目录 第一题:复写零第二题:快乐数:第三题:盛水最多的容器第四题:有效三角形的个数 第一题:复写零力扣(LeetCode)官网-全球极客挚爱的技术成长平台思路:上期介绍到双指针,这次来用双指针实际操作。第一种从前往后复写,会导致为复写的数字被覆盖,因此选择从后往前复写,那么先找到复写的最后一个元素,再从后往前复写即可。步骤1.初始化指针2.找复写3.处理边界问题4.开始复写classSolution{public:voidduplicateZeros(vector&arr){ intcur=0,dest=-1,n=arr.size();while(cur=n-1)break; cur++;}
力扣572:另一棵树的子树给你两棵二叉树root和subRoot。检验root中是否包含和subRoot具有相同结构和节点值的子树。如果存在,返回true;否则,返回false。二叉树tree的一棵子树包括tree的某个节点和这个节点的所有后代节点。tree也可以看做它自身的一棵子树。示例1:输入:root=[3,4,5,1,2],subRoot=[4,1,2]输出:true示例2:输入:root=[3,4,5,1,2,null,null,null,null,0],subRoot=[4,1,2]输出:false提示:root树上的节点数量范围是[1,2000]subRoot树上的节点数量范围是
【力扣热题100】207.课程表python拓扑排序写在最前面207.课程表解决方案:判断是否可以完成所有课程的学习方法:拓扑排序实现步骤Python实现性能分析结论写在最前面刷一道力扣热题100吧难度中等https://leetcode.cn/problems/course-schedule/?envType=study-plan-v2&envId=top-100-liked207.课程表你这个学期必须选修numCourses门课程,记为0到numCourses-1。在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中prerequisites[i]=[ai
【力扣热题100】287.寻找重复数写在最前面理解解决"寻找重复数"问题的算法问题描述弗洛伊德的乌龟和兔子方法为什么这个方法有效?代码复杂度总结回顾写在最前面刷一道力扣热题100吧难度中等https://leetcode.cn/problems/find-the-duplicate-number/?envType=study-plan-v2&envId=top-100-liked一年半前做过这题,但是时间复杂度不够。现在重新学一下主要是用到了弗洛伊德的乌龟和兔子方法算法预览:初始化:从两个指针开始,“乌龟"和"兔子”,都指向第一个元素。第一阶段-检测循环:每次移动乌龟一步(tortoise=n
我的往期文章:leetCode647.回文子串动态规划+优化空间/中心扩展法+双指针-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/133883091?spm=1001.2014.3001.5501leetCode131.分割回文串+回溯算法+图解+笔记-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134700907?spm=1001.2014.3001.5501(一)利用动态规划来优化判断回文子串利用动态规划高效地事先一次性计算出,针对一个字符
目录一,回文子串1.题目2.题目接口3,解题代码及其思路解题代码:二,分割回文串II1,题目2,题目接口3,解题思路及其代码 一,回文子串1.题目给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。回文字符串 是正着读和倒过来读一样的字符串。子字符串 是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例1:输入:s="abc"输出:3解释:三个回文子串:"a","b","c"示例2:输入:s="aaa"输出:6解释:6个回文子串:"a","a","a","aa","aa","aaa"提示:1s 由小写英文字母
打卡记录CollapsingStrings(Trie树)链接#include#includeusingnamespacestd;constintN=2e6+10;intson[N][26],idx,cnt1[N],cnt2[N];intmain(){ autoinsert=[&](string&str,int*cnt){ intp=0; for(inti=0;istr.size();++i) { intu=str[i]-'a'; if(!son[p][u])son[p][u]=++idx; p=son[p][u]; cnt[p]++; } }; intn=0; long
力扣每日一题题目:2477.到达首都的最少油耗日期:2023-12-05用时:34m15s时间:37ms内存:84.8MB思路:分别计算每条路上通过的城市数量(数量/座位数,向上取整),然后求和,这里每条路上通过的城市数量实际就是图中每个节点的子节点数量。代码:classSolution{publiclongminimumFuelCost(int[][]roads,intseats){intsize=roads.length+1;ListInteger>[]list=newArrayList[size];for(inti=0;isize;i++){list[i]=newArrayList>()