欢迎关注个人公众号:爱喝可可牛奶 LeetCode 39. 组合总和 40.组合总和II 131.分割回文串 LeetCode 39. 组合总和 分析 回溯可看成对二叉树节点进行组合枚举,分为横向和纵向 每次往sum添加新元素时,必须明确从can哪个位置开始,定义变量pos 返回条件 sum == target 或 sum > target; 横向结束条件 没有新元素可以添加了即pos<can.length; bt(can, sum, tar, pos){ if(sum == tar) add…
题目地址:HDU 5371 题意:给你一个具有n个元素的整数序列,问你是否存在这样一个子序列.该子序列分为三部分,第一部分与第三部分同样,第一部分与第二部分对称.假设存在求最长的符合这样的条件的序列. 思路:用Manacher算法来处理回文串的长度,记录下以每个-1(Manacher算法的插入)为中心的最大回文串的长度. 然后从最大的開始穷举,仅仅要p[i]-1即能得出以数字为中心的最大回文串的长度,然后找到右边相应的'-1'.推断p[i]是不是大于所穷举的长度,假设当前的满足三段,那么就跳出,…
第一题150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除数为 0 的情况. ψ(`∇´)ψ 我的思路 题目上提示的已经很清晰了 去掉括号后表达式无歧义,上式即便写成 1 2 + 3 4 + * 也可以依据次序计算出正确结果. 适合用栈操作运算:遇到数字则入栈:遇到算符则取出栈…
2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次了解滑动窗口. 第三题 螺旋矩阵是我用暴力没有解出来的题,我总数在找每行每列的规律,谁知道是转着圈存,好在我觉得这种题只能诓骗我一次 数组专题总结 我觉得数组还行,没有遇到太难的题目,导致我都有点飘了,下章节链表真的是教会我做人…
基础知识 // String -> char[] char[] string=s.toCharArray(); // char[] -> String String.valueOf(string) 注意replace replaceAll区别,都是全局匹配替换,不过replaceAll是正则匹配 LeetCode 344.反转字符串 分析1.0 基础的前后指针元素互换 class Solution { public void reverseString(char[] s) { if(s==nu…
▶ 给定一个数组 和一个目标值.从该数组中选出若干项(项数不定),使他们的和等于目标值. ▶ 36. 数组元素无重复 ● 代码,初版,19 ms .从底向上的动态规划,但是转移方程比较智障(将待求数分解为左右两个半段,分别找解,拼在一起,再在接缝上检查是否是重复解). class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) {…
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false class Solution: def isPalindrome(self, s): """ :type s: str :rtype: b…
leecode刷题(15)-- 验证回文字符串 验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 思路: 刚开始和上一题一样,我也没理解"回文字符串"是什么意思,后来想了下,&quo…
T1 X国的军队 贪心,按$b-a$的大小降序排序,然后就贪心吧 #include<iostream> #include<cstdio> #include<algorithm> #define ll long long using namespace std; struct node { ll a,b,las; }h[]; ll T,n,ans; ll read() { ll aa=,bb=;char cc=getchar(); ;cc=getchar();} +cc-…
问题描述 给定一个字符串,输出把它全部切成回文子串的最小分割数. 例:str="ACDCDCDAD",输出2. 解题思路 DP 存储结构 dp数组dp[len+1],dp[i]表示子串str[i:len]至少需要切割几次,才能都切割成回文串.对应的,循环从右至左进行. 注意 dp[i]的含义完全可以做对称更改,循环也变为从前向后即可. 此外,为了保证int cutTime=dp[j+1]+1;//句的顺利执行,且dp[len-1]=0,palStr=true.dp数组多开一位,并初始化…