首先需要判断图的边界,然后再上下左右继续深度遍历,并把遍历到的标记为已访问,可以原地修改图做标记
要找有效括号的最长子串,定义dp[i]是以s[i]为结尾的子串的最长长度,显然s[i]必须是),那就会有两种情况,对于s[i]=),如果s[i-1]=(,说明dp[i]应该是dp[i-2]+2,考虑到是...()这样的,那么状态转移方程为...
要找乘积最大的连续子数组,我们之前做过找和最大的连续子数组【LeetCode热题100】【普通数组】最大子数组和-CSDN博客
让dp[i]是以nums[i]为结尾的子序列的最长递增长度,遍历nums[i]之前的元素,如果有比nums[i]小的,说明递增子序列可以延申
即完全背包问题,同之前的完全平方数、零钱兑换,相当于给定几个数,可以反复用,看能不能组成某个数
判断数组能否被分成两个和相等的子数组,先求数组的和sum,即变成能不能找到一个组合的和是sum/2,每个数最多只能被选择一次,即0-1背包问题
要在数组中通过加减元素得到目标和,记加的元素和为x,减的元素和为y,即x-y=target
要拿硬币凑钱,硬币无限多,就是完全背包问题,定义dp[i]是要凑的钱i的硬币数,对于当前硬币来说,如果选择了这个硬币,要么要凑的硬币数就变成dp[i-coin]...
所以题目变成要从1,2,3,……,n的平方根中找出平方和的和是n的组合,并且数量最少
在两个有序数组中在不合并的前提下寻找他们合并后的中位数,这个可以转换成寻找第k大的数