最长重复子数组(连续) 718. 最长重复子数组给两个整数数组 nums1 和 nums2 ,返回两个数组中公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3,2,1] 。 示例 2: 输入:nums1 = [0,0,0,0,0], nums2 = [0 2023-01-28 算法 > 动态规划 #算法
打家劫舍Ⅲ 337. 打家劫舍 III小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。 给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。 示例 2023-01-27 算法 > 动态规划 #算法
多重背包问题 多重背包问题有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。 多重背包和01背包问题唯一不同的地方就是每件物品限制数量。 只要把Mi件物品分成多件独立的物品,那么就是01背包问题 例如: 背包最大重量为10。 物品为: 重量 价值 数量 物品0 1 2023-01-26 算法 > 动态规划 #算法
打家劫舍 198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 2023-01-26 算法 > 动态规划 #算法
打家劫舍Ⅱ 213. 打家劫舍 II你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。 示例 1: 输入:nums 2023-01-26 算法 > 动态规划 #算法
完全平方数 279. 完全平方数给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示例 1: 输入:n = 12输出:3解释:12 = 4 + 4 + 4 示例 2: 输入:n = 13输出:2解释:13 2023-01-25 算法 > 动态规划 #算法
单词拆分 139. 单词拆分给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 2023-01-25 算法 > 动态规划 #算法
排列总和/组合总和Ⅳ 322. 零钱兑换给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 : 输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1 2023-01-24 算法 > 动态规划 #算法
爬楼梯进阶版 爬楼梯进阶版假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 ,2 ,3…m个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入: n = 3 ,m = 3 输出:4 解释: 有四种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1阶 + 2 阶 2 阶 + 1 阶 3 阶 解题思路动态规划 此题为爬楼梯的升级版,解题思路同[组合总和Ⅳ](. 2023-01-24 算法 > 动态规划 #算法
排列总和/组合总和Ⅳ 377. 排列总和/组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums = [1,2,3], target = 4输出:7解释:所有可能的组合为:(1, 1, 1, 1)(1, 1, 2) 2023-01-23 算法 > 动态规划 #算法