左程云算法刷题班
PaintD
这个作者很懒,什么都没留下…
展开
-
获取单字符串中所有连续的回文字符串
思路:每个回文字符串去掉左右两端依赖是回文字符串(len==1的特例)反向推出如果一个字符串是回文字符串,两端以内必须是回文&&两端必须相等以i为x,j为y建立dp表。i为回文数组左端,j为右端特殊位置i=j时len=1,都是回文。i+1=j时,len=2,如果i==j则是回文。i>j时无意义,dp表左下半表不填普遍位置的依赖关系if(arr[i]= =arr[j]&&ap[i+1][j-1]= =true)dp[i][j]=true因为依赖左下.原创 2022-01-09 18:35:12 · 400 阅读 · 0 评论 -
132. 分割回文串 II
题目:问题一:一个字符串至少要切几刀能让切出来的子串都是回文串输入:s = “aab”输出:1解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。切2刀==分成3个部分思路:从i位置开始可以合并的最长回文串。从每个可以合并的末尾再调函数去递归处理后续可以合并的最长回文串。(暴力尝试)再加记忆法搜索流程:i从右往左遍历,if(i~len)就是回文字符串则dp[i]=0else 则i往右遍历,找最小的dp[]值,则dp[i]= =min+1最后得到一维..原创 2022-01-09 18:34:07 · 284 阅读 · 0 评论 -
给定布尔运算式子通过加括号得T/F
思路:最小阶段为,()符号()。LT,LF,RT,RF之间相乘即可得到最终结果流程:获取范围L~R,分成两区间各自递归,返回LT,LF,RT,RF的值。根据中间符号的真值表,四个变量组合成需求的T/F代码```JAVA package class10; // 本题测试链接 : https://leetcode-cn.com/problems/boolean-evaluation-lcci/ public class Code05_BooleanEvaluation.原创 2022-01-06 22:25:17 · 149 阅读 · 0 评论 -
426.将二叉搜索树转化为排序的双向链表
426.将二叉搜索树转化为排序的双向链表Properties#二叉树 #双向链表 #二叉树递归套路思路:组成链表只要将父节点接入左子树的尾,和右子树的头节点就行。每个节点向左右子树要头尾节点。再给爷节点传父节点(自身)的头尾节点(也就是左子树的头和右子树的尾)代码javapackage class10;// 本题测试链接 : https://leetcode.com/problems/convert-binary-search-tree-to-sorted-doubly-linked-lis原创 2022-01-06 22:24:17 · 473 阅读 · 0 评论 -
逆序对题目
逆序对解法一、Merge在分为左右两数组时,指针从 右往左移动,谁大拷贝谁,每次拷贝左组数的时候记录右组有几个没拷贝的数(看小标)就知道有几个逆序对解法二、动态规划n个数,k个逆序对。建立二维n-k的dp表思路:1n以及按某种顺序排好,一个n个数,已经有0n个逆序对。第n+1个数可以插在前面数之间。n+1每在一个数前面就会增加一个逆序对。所以能增加0~n个逆序对。然后在dp[][]表上找相应的几个格子加起来就行有枚举行为,所以最后优化为两个格子的差java1public static i原创 2022-01-06 22:22:43 · 499 阅读 · 0 评论 -
45. 跳跃游戏 II
题目:45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: [2,3,0,1,4]输出: 2提示:1 <= nums.原创 2022-01-06 22:21:34 · 70 阅读 · 0 评论 -
俄罗斯套娃
题目俄罗斯套娃给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1: 输入:envelopes = [[5,4],[6,4],[6,7],[2,3]] 输出:3 解释:最多信封的.原创 2022-01-06 22:21:04 · 88 阅读 · 0 评论 -
最长子序列
题目:最长子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列可以不连续,但是得按原数组中的相对位置关系示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: - 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: - 输入:nums = [7,7,7,7,7,7,7] 输出:1提示:1 .原创 2022-01-06 22:20:10 · 188 阅读 · 0 评论 -
301.删除无效括号
题目:301.删除无效括号给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。有效括号的情况: 有效 有效 or(有效)思路:先检查 ) 错误的情况,再检查( 错误的情况检查:从j【一开始为0】位置开始遍历遇到( 则++,遇到 )就–。如果cont<0则i位置出错消除错误:遍历[i,j],遇到右括号&&该位的前一个位置不为右括号=》删除该右括号。令i到当前位置。再调remove(i,j.原创 2022-01-06 22:18:51 · 307 阅读 · 0 评论 -
相邻开关控制路灯求全亮时最少灯数
题目:相邻开关控制路灯求全亮时最少灯数给定一个数组arr,长度为N,arr中的值不是0就是1 arr[i]表示第i盏灯的状态,0代表灭灯,1代表亮灯 每一栈灯都有开关,但是按下i号灯的开关,会同时改变i-1、i、i+1栈灯的状态问题一: 如果N盏灯排成一条直线,请问最少按下多少次开关,能让灯都亮起来 排成一条直线说明: i为中间位置时,i号灯的开关能影响i-1、i和i+1 0号灯的开关只能影响0和1位置的灯 N-1号灯的开关只能影响N-2和N-1位置的灯问题二: 如果N盏灯排成一个圈,请问最少..原创 2022-01-06 22:15:35 · 210 阅读 · 0 评论