动态规划
利用动态规划解决问题
lly-rachel
这个作者很懒,什么都没留下…
展开
-
LeetCode 300. 最长递增子序列
一、问题描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。二、测试数据示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums =原创 2021-09-02 15:10:08 · 81 阅读 · 0 评论 -
LeetCode 53. 最大子序和 [java实现]
一、问题描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 二、测试数据示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1提示:1 <= nums.length <= 3 * 104-105 <= nums[i] <= 105 三、解题思路贪心算法:原创 2021-07-17 15:34:11 · 82 阅读 · 0 评论 -
LeetCode 91. 解码方法 [java实现]
一、问题描述一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:"AAJF" ,将消息分组为 (1 1 10 6)"KJF" ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06”原创 2021-04-21 16:10:05 · 121 阅读 · 1 评论 -
LeetCode 213. 打家劫舍 II [java实现]
一、问题描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。 二、测试数据示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额原创 2021-04-15 20:44:03 · 243 阅读 · 0 评论 -
LeetCode 面试题 17.21. 直方图的水量 [java实现]
一、问题描述 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。 感谢 Marcos 贡献此图。难度:困难 二、测试数据示例 1:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6 三、解题思路动态规划 思路从左边扫描得到 left[m] 右边 right[原创 2021-04-02 16:58:24 · 169 阅读 · 0 评论 -
LeetCode 115.不同的子序列 [java实现]
不同的子序列 leetcode问题描述: 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是) 题目数据保证答案符合 32 位带符号整数范围。 难度:困难 提示:0 <= s.length, t.length <= 1000s 和 t 由英文字母组成 测试数据:示例一:输入:s = "rabbbit", t =原创 2021-03-17 22:06:33 · 125 阅读 · 0 评论 -
LeetCode 403. 青蛙过河 [java实现]
一、问题描述 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1 个原创 2021-05-05 23:11:13 · 144 阅读 · 0 评论 -
LeetCode 363. 矩形区域不超过 K 的最大数值和 [java实现]
一、问题描述 给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 二、测试数据示例 1:输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。示例 2:输入:matrix = [[2,2,-1]], k原创 2021-04-22 16:15:42 · 158 阅读 · 1 评论