随笔分类 -  动态规划DP

摘要:题目来源 221. 最大正方形 题目详情 在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。 示例 1: 输入: matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1" 阅读全文
posted @ 2022-01-14 11:47 Garrett_Wale 阅读(494) 评论(0) 推荐(0) 编辑
摘要:题目来源 32. 最长有效括号 题目详情 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入: s = "(()" 输出: 2 解释: 最长有效括号子串是 "()" 示例 2: 输入: s = ")()())" 输出: 4 解释: 最长有效 阅读全文
posted @ 2022-01-09 10:20 Garrett_Wale 阅读(395) 评论(0) 推荐(0) 编辑
摘要:题目来源 647. 回文子串 题目详情 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 阅读全文
posted @ 2022-01-07 11:59 Garrett_Wale 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题目来源 494. 目标和 题目详情 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得 阅读全文
posted @ 2022-01-04 21:40 Garrett_Wale 阅读(314) 评论(0) 推荐(0) 编辑
摘要:题目来源 416. 分割等和子集 题目详情 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入: nums = [1,5,11,5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11] 。 阅读全文
posted @ 2022-01-01 10:19 Garrett_Wale 阅读(136) 评论(0) 推荐(0) 编辑
摘要:题目来源 337. 打家劫舍 III 题目详情 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 阅读全文
posted @ 2021-12-30 10:43 Garrett_Wale 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题目来源 213. 打家劫舍 II 题目详情 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代 阅读全文
posted @ 2021-12-29 09:52 Garrett_Wale 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目来源 198. 打家劫舍 题目详情 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 阅读全文
posted @ 2021-12-29 09:15 Garrett_Wale 阅读(41) 评论(0) 推荐(0) 编辑
摘要:题目来源 122. 买卖股票的最佳时机 II 题目详情 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的 阅读全文
posted @ 2021-12-25 16:21 Garrett_Wale 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目来源 309. 最佳买卖股票时机含冷冻期 题目详情 给定一个整数数组,其中第_ i_ 个元素代表了第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出 阅读全文
posted @ 2021-12-25 16:04 Garrett_Wale 阅读(61) 评论(0) 推荐(0) 编辑
摘要:题目来源 152. 乘积最大子数组 题目详情 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2, 阅读全文
posted @ 2021-12-23 10:25 Garrett_Wale 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目来源 LeetCode-279.完全平方数 题目详情 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数 是一个整数,其值等于另一个 阅读全文
posted @ 2021-12-21 10:13 Garrett_Wale 阅读(193) 评论(0) 推荐(0) 编辑
摘要:题目来源 LeetCode_322 题目详情 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 1: 输入: 阅读全文
posted @ 2021-04-03 21:30 Garrett_Wale 阅读(376) 评论(0) 推荐(0) 编辑
摘要:0左边必有1的二进制字符串数量 0左边必有1的二进制字符串数量 题目描述 题解思路 代码实现 package com.walegarrett.interview; import java.util.Scanner; /** * @Author WaleGarrett * @Date 2021/3/2 阅读全文
posted @ 2021-03-26 21:50 Garrett_Wale 阅读(249) 评论(0) 推荐(0) 编辑
摘要:72. 编辑距离 LeetCode_72 题目描述 题解分析 代码实现 思路一 class Solution { public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.le 阅读全文
posted @ 2021-03-18 09:19 Garrett_Wale 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题目来源 LeetCode_124 题目描述 题解描述 解法一:树形DP 解法二:后序遍历 我们在这里需要仔细考虑一下,怎样的路径是合法的?换句话说,树上的路径可以怎样构成? 按照题意分析,我们的单边路径一定是合法的,而对于当前节点而言,左半边路径加上当前节点再加上右单边节点也是合法的。 我们可以定 阅读全文
posted @ 2021-03-17 21:54 Garrett_Wale 阅读(266) 评论(0) 推荐(0) 编辑
摘要:718. 最长重复子数组 LeetCode_718 题目描述 相似题目 1143. 最长公共子序列 解法一:使用动态规划 首先需要说明的是,这题和最长公共子序列是不同的,子序列并没有要求说是连续的,而连续数组则要求是连续的。 首先定义dp[i][j]表示为A[i:]和B[j:]的最长公共前缀。 dp 阅读全文
posted @ 2021-03-14 22:25 Garrett_Wale 阅读(147) 评论(0) 推荐(0) 编辑
摘要:62. 不同路径 LeetCode_62 题目描述 题解分析 题目使用动态规划来实现。 在二层循环之前,需要对初始值(行为0或者列为0)进行初始化,这些情况都只有一种走法。 在循环体内,由于只能向下和向右走,所有dp[i][j] = dp[i-1][j] + dp[i][j-1]。 代码实现 cla 阅读全文
posted @ 2021-03-14 19:47 Garrett_Wale 阅读(64) 评论(0) 推荐(0) 编辑
摘要:64. 最小路径和 LeetCode_64 题目描述 代码实现 class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[][] dp = new i 阅读全文
posted @ 2021-03-14 14:58 Garrett_Wale 阅读(45) 评论(0) 推荐(0) 编辑
摘要:1143. 最长公共子序列 LeetCode_1143 题目描述 相似题目 718. 最长重复子数组 题解分析 与最长递增子序列问题类似,本题也属于子序列的问题之一。前面也提到了,子序列的dp方程定义有一个通用的套路,那就是dp[i]通常表示为以i结尾的子序列的最值。 在本题中,我们定义dp[i][ 阅读全文
posted @ 2021-03-14 13:49 Garrett_Wale 阅读(61) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示