力扣动态规划算法题
文章平均质量分 86
-元清-
大三学生
展开
-
LeetCode刷题--- 完全平方数
给你一个整数n,返回和为n的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9和16都是完全平方数,而3和11不是。原创 2024-04-22 18:12:54 · 2302 阅读 · 1 评论 -
LeetCode刷题--- 零钱兑换 II
给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。原创 2024-04-21 11:13:56 · 2590 阅读 · 1 评论 -
LeetCode刷题--- 零钱兑换
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。原创 2024-04-19 15:46:32 · 1503 阅读 · 2 评论 -
LeetCode刷题--- 【模板】完全背包
你有一个背包,最多能容纳的体积是V。现在有n种物品,每种物品有任意多个,第i种物品的体积为 vi,价值为 wi。(1)求这个背包至多能装多大价值的物品?(2)若背包恰好装满,求至多能装多大价值的物品?输入描述:第一行两个整数n和V,表示物品个数和背包体积。接下来n行,每行两个数 vi 和 wi,表示第i种物品的体积和价值。1≤n,V≤1000原创 2024-04-18 14:31:30 · 2077 阅读 · 1 评论 -
LeetCode刷题--- 最后一块石头的重量 II
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x原创 2024-04-17 19:19:00 · 1683 阅读 · 0 评论 -
LeetCode刷题--- 目标和
给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个表达式:例如,nums = [2, 1],可以在2之前添加'+',在1之前添加'-',然后串联起来得到表达式"+2-1"。返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目。原创 2024-04-15 20:27:57 · 2014 阅读 · 1 评论 -
LeetCode刷题--- 分割等和子集
给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。原创 2024-04-09 15:04:59 · 1825 阅读 · 1 评论 -
LeetCode刷题--- 让字符串成为回文串的最少插入次数
给你一个字符串s,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让s成为回文串的最少操作次数。「回文串」是正读和反读都相同的字符串。原创 2024-04-08 13:49:06 · 2489 阅读 · 1 评论 -
LeetCode刷题--- 最长回文子序列
给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。原创 2024-04-07 21:48:43 · 1053 阅读 · 0 评论 -
LeetCode刷题--- 分割回文串 II
给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。原创 2024-04-05 16:14:42 · 1111 阅读 · 1 评论 -
LeetCode刷题---【模板】01背包
你有一个背包,最多能容纳的体积是V。现在有n个物品,第i个物品的体积为vi,价值为wi。(1)求这个背包至多能装多大价值的物品?(2)若背包恰好装满,求至多能装多大价值的物品?输入描述:第一行两个整数n和V,表示物品个数和背包体积。接下来n行,每行两个数vi和wi,表示第i个物品的体积和价值。1≤10001≤n,V,vi,wi≤1000输出描述:输出有两行,第一行输出第一问的答案,第二行输出第二问的答案,如果无解请输出0。原创 2024-04-04 10:37:25 · 1577 阅读 · 4 评论 -
LeetCode刷题--- 分割回文串 IV
给你一个字符串s,如果可以将它分割成三个非空回文子字符串,那么返回true,否则返回false。当一个字符串正着读和反着读是一模一样的,就称其为回文字符串。原创 2024-04-02 11:46:08 · 1891 阅读 · 1 评论 -
LeetCode刷题--- 最长回文子串
给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。原创 2024-04-01 10:04:33 · 2017 阅读 · 1 评论 -
LeetCode刷题--- 回文子串
给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。原创 2024-03-31 10:12:56 · 1452 阅读 · 1 评论 -
LeetCode刷题--- 等差数列划分 II - 子序列
给你一个整数数组nums,返回nums中所有等差子序列的数目。如果一个序列中至少有三个元素,并且任意两个相邻元素之差相同,则称该序列为等差序列。例如,[1, 3, 5, 7, 9]、[7, 7, 7, 7]和[3, -1, -5, -9]都是等差序列。再例如,[1, 1, 2, 5, 7]不是等差序列。数组中的子序列是从数组中删除一些元素(也可能不删除)得到的一个序列。例如,[2,5,10]是[1,2,1,2,4,1,5,10]的一个子序列。题目数据保证答案是原创 2024-03-27 20:04:19 · 1712 阅读 · 2 评论 -
LeetCode刷题--- 最长的斐波那契子序列的长度
如果序列X_1, X_2, ..., X_n满足下列条件,就说它是斐波那契式的:n >= 3对于所有i + 2原创 2024-03-26 16:21:44 · 2216 阅读 · 2 评论 -
LeetCode刷题--- 最长定差子序列
给你一个整数数组arr和一个整数difference,请你找出并返回arr中最长等差子序列的长度,该子序列中相邻元素之间的差等于difference。子序列是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从arr派生出来的序列。原创 2024-03-17 09:54:59 · 1652 阅读 · 4 评论 -
LeetCode刷题--- 最长数对链
给你一个由 n 个数对组成的数对数组 pairs ,其中 pairs[i] = [lefti, righti] 且 lefti < righti 。现在,我们定义一种 跟随 关系,当且仅当 b < c 时,数对 p2 = [c, d] 才可以跟在 p1 = [a, b] 后面。我们用这种形式来构造 数对链 。找出并返回能够形成的 最长数对链的长度 。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。原创 2024-03-15 21:28:27 · 1130 阅读 · 3 评论 -
LeetCode刷题--- 最长递增子序列的个数
给定一个未排序的整数数组nums,返回最长递增子序列的个数。注意这个数列必须是严格递增的。原创 2024-03-14 18:01:20 · 3329 阅读 · 2 评论 -
LeetCode刷题--- 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1, 7, 4, 9, 2, 5]是一个摆动序列,因为差值(6, -3, 5, -7, 3)是正负交替出现的。相反,[1, 4, 7, 2, 5]和[1, 7, 4, 5, 5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。子序列可以通过从原始序列中删除一些原创 2024-03-13 12:02:49 · 1600 阅读 · 2 评论 -
LeetCode刷题--- 最长递增子序列
给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列原创 2024-03-12 14:00:30 · 1841 阅读 · 2 评论 -
LeetCode刷题--- 环绕字符串中唯一的子字符串
定义字符串base为一个"abcdefghijklmnopqrstuvwxyz"无限环绕的字符串,所以base看起来是这样的:"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".给你一个字符串s,请你统计并返回s中有多少不同非空子串也在base中出现。原创 2024-03-11 14:03:29 · 1326 阅读 · 2 评论 -
LeetCode刷题--- 单词拆分
给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。原创 2024-03-08 13:29:17 · 1411 阅读 · 10 评论 -
LeetCode刷题--- 最长湍流子数组
给定一个整数数组arr,返回arr的最大湍流子数组的长度。如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。更正式地来说,当arr的子数组A[i], A[i+1], ..., A[j]满足仅满足下列条件时,我们称其为湍流子数组:原创 2024-03-06 12:10:32 · 1296 阅读 · 4 评论 -
LeetCode刷题--- 等差数列划分
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个整数数组nums,返回数组nums中所有为等差数组的子数组个数。子数组是数组中的一个连续序列。原创 2024-03-04 19:55:00 · 882 阅读 · 8 评论 -
LeetCode刷题--- 乘积为正数的最长子数组长度
给你一个整数数组nums,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。原创 2024-03-01 20:07:40 · 2085 阅读 · 13 评论 -
LeetCode刷题--- 乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。子数组 是数组的连续子序列。原创 2024-02-29 13:24:47 · 1943 阅读 · 10 评论 -
LeetCode刷题--- 环形子数组的最大和
给定一个长度为n的环形整数数组nums,返回nums的非空子数组的最大可能和。环形数组意味着数组的末端将会与开头相连呈环状。形式上,nums[i]的下一个元素是nums[(i + 1) % n],nums[i]的前一个元素是nums[(i - 1 + n) % n]。子数组最多只能包含固定缓冲区nums中的每个元素一次。形式上,对于子数组nums[i], nums[i + 1], ..., nums[j],不存在i原创 2024-02-27 11:51:31 · 1832 阅读 · 43 评论 -
LeetCode刷题--- 最大子数组和
给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。原创 2024-01-23 10:53:29 · 1158 阅读 · 0 评论 -
LeetCode刷题--- 买卖股票的最佳时机 IV
给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次,卖k次。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。原创 2024-01-22 11:03:34 · 1520 阅读 · 3 评论 -
LeetCode刷题--- 买卖股票的最佳时机 III
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)原创 2024-01-19 10:44:49 · 1398 阅读 · 1 评论 -
LeetCode刷题--- 买卖股票的最佳时机含手续费
给定一个整数数组prices,其中prices[i]表示第i天的股票价格 ;整数fee代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。原创 2024-01-18 08:45:09 · 1837 阅读 · 9 评论 -
LeetCode刷题--- 买卖股票的最佳时机含冷冻期
给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)原创 2024-01-17 18:57:42 · 2147 阅读 · 5 评论 -
LeetCode刷题--- 粉刷房子
假如有一排房子,共n个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个n x 3的正整数矩阵costs来表示的。例如,costs[0][0]表示第 0 号房子粉刷成红色的成本花费;costs[1][2]表示第 1 号房子粉刷成绿色的花费,以此类推。请计算出粉刷完所有房子最少的花费成本。原创 2024-01-15 09:18:49 · 1877 阅读 · 11 评论 -
LeetCode刷题--- 删除并获得点数
给你一个整数数组nums,你可以对它进行一些操作。每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除所有等于nums[i] - 1和nums[i] + 1的元素。开始你拥有0个点数。返回你能通过这些操作获得的最大点数。原创 2024-01-14 10:08:36 · 1874 阅读 · 10 评论 -
LeetCode刷题--- 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到原创 2024-01-13 12:23:21 · 1706 阅读 · 14 评论 -
LeetCode刷题--- 按摩师
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。原创 2024-01-12 10:00:03 · 1455 阅读 · 24 评论 -
LeetCode刷题--- 地下城游戏
恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑原创 2024-01-11 09:09:12 · 1974 阅读 · 39 评论 -
LeetCode刷题--- 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。原创 2024-01-10 09:26:21 · 1691 阅读 · 37 评论 -
LeetCode刷题--- 下降路径最小和
给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1) 。原创 2024-01-09 13:49:08 · 2287 阅读 · 15 评论