![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
力扣
四美
这个作者很懒,什么都没留下…
展开
-
和为K的子数组
题目地址 考虑以 i 结尾和为 k 的连续子数组个数,我们需要统计符合条件的下标 j 的个数,其中 0≤j≤i 且 [j…i] 这个子数组的和恰好为 k <!--枚举 时间复杂度是O(n^2),空间复杂度是O(1) --> public class Solution { public int subarraySum(int[] nums, int k) { int count = 0; for (int start = 0; start <原创 2021-03-22 15:16:06 · 129 阅读 · 0 评论 -
最长有效括号
题目地址 定义 dp[i] 表示以下标i字符结尾的最长有效括号的长度,我们将dp 数组全部初始化为 0 。显然有效的子串一定以 ‘)’结尾,因此我们可以知道以 ‘(’ 结尾的子串对应的dp 值必定为 0 ,我们只需要求解‘)’ 在dp数组中对应位置的值 s[i]=‘)’ 且 s[i - 1]= ‘(’,也就是字符串形如 “……()”,我们可以推出dp[i]=dp[i−2]+2 s[i]=‘)’ 且 s[i - 1]= ‘)’,也就是字符串形如 “……))”,如果 s[i−dp[i−1]−1]=‘(’,那原创 2021-03-21 21:30:36 · 129 阅读 · 0 评论 -
打家劫舍
题目地址 用dp[i]表示前i间房屋能偷窃到的最高总金额,那么就有如下的状态转移方程 dp[i]=max(dp[i-2]+num[i],dp[i-1]) 边界条件 dp[0] = num[0] -> 只有一间房屋 dp[1] = max(num[0],num[1]) -> 只有2间房屋,选择金额最高的偷窃 最终答案即为dp[n-1] <!--动态规划 时间复杂度是O(n),空间复杂度是O(n) --> class Solution { public int rob(i原创 2021-03-21 21:29:30 · 84 阅读 · 0 评论 -
盛最多水的容器
题目地址 <!--暴力解法,双重循环 时间复杂度是O(n ^ 2),空间复杂度是O(1) --> public class Solution { public int maxArea(int[] height) { int area = 0; for (int i = 0; i < height.length - 1; i++) { int tempArea = 0; for (int j = i + 1; j < height.length; j++)原创 2021-03-21 20:06:02 · 59 阅读 · 0 评论