动态规划
失恋味道的麻辣小龙虾
但是小龙虾不喜欢被吃~
展开
-
(力扣---动态规划)等差数组划分
(力扣)等差数组划分描述如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0&lt...原创 2019-03-09 01:16:44 · 769 阅读 · 0 评论 -
(力扣---动态规划)三角形最小路径和
(力扣)三角形最小路径和问题描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。最简单的dp问题,不多说了。 ...原创 2019-03-07 23:55:35 · 152 阅读 · 0 评论 -
(力扣---动态规划)比特位计数
(力扣—动态规划)比特位计数要求给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]思想这道题要计算二进制中1的个数,那我们就想能不能用二进制进行运算(ps:这里多说一句 二进制真的太奇妙了)为...原创 2019-03-12 00:06:03 · 312 阅读 · 0 评论 -
(力扣---动态规划)石子游戏
(力扣—动态规划)石子游戏描述亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢...原创 2019-03-12 00:55:14 · 420 阅读 · 0 评论 -
(力扣---动态规划)最低票价
(力扣—动态规划)最低票价问题描述在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。...原创 2019-03-20 20:41:29 · 816 阅读 · 0 评论 -
(力扣---动态规划)两个字符串中最小ASCII和
(力扣)两个字符串中最小ASCII和描述给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。示例1输入: s1 = “sea”, s2 = “eat”输出: 231解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。在 “eat” 中删除 “t” 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 23...原创 2019-03-08 13:10:40 · 463 阅读 · 0 评论 -
(力扣---动态规划)下降路径最小和
(力扣—动态规划)下降路径最小和描述给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和。下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。示例:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:12解释:可能的下降路径有:[1,4,7], [1,4,8], [1,5,7], [1,5,8]...原创 2019-03-12 23:41:09 · 340 阅读 · 0 评论 -
(力扣---动态规划)最长回文子串
(力扣—动态规划)最长回文子串问题描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思想这道题肯定要用到两个下标变量,假设为i、j这时候我们就会想到,如果当s[i] == s[j]成立且字符串...原创 2019-03-13 00:59:25 · 280 阅读 · 0 评论 -
(力扣---动态规划)最长数对链(贪心解法)
(力扣—动态规划)最长数对链(贪心解法)问题描述给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。示例 :输入:...原创 2019-03-23 21:13:30 · 415 阅读 · 0 评论 -
(力扣---动态规划)打家劫舍
(力扣—动态规划)打家劫舍说明你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1] 输出: 4解释: 偷窃 1 号房屋 ...原创 2019-03-11 01:03:20 · 1451 阅读 · 1 评论 -
(力扣---动态规划)整数拆分
(力扣—动态规划)整数拆分问题描述给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58...原创 2019-03-15 01:10:29 · 1840 阅读 · 0 评论 -
(力扣---动态规划)回文子串
(力扣—动态规划)回文子串描述给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: “abc”输出: 3解释: 三个回文子串: “a”, “b”, “c”.示例 2:输入: “aaa”输出: 6说明: 6个回文子串: “a”, “a”, “a”, “aa”, “aa...原创 2019-03-14 14:13:16 · 465 阅读 · 0 评论 -
(力扣---动态规划)不同路径
(力扣)不同路径描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3...原创 2019-03-09 23:40:47 · 284 阅读 · 0 评论 -
(力扣---动态规划)区域和检索 - 数组不可变
(力扣)区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -&amp;gt; 1sumRange(2, 5) -&amp;gt; -1sumRange(0, 5) -&amp;gt; ...原创 2019-03-10 00:24:59 · 305 阅读 · 0 评论 -
(力扣---动态规划)买卖股票的最佳时机
(力扣)买卖股票的最佳时机说明给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = ...原创 2019-03-10 00:36:32 · 702 阅读 · 0 评论 -
(力扣---动态规划)爬楼梯
(力扣)爬楼梯说明假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2...原创 2019-03-10 00:49:46 · 1480 阅读 · 0 评论 -
(力扣---动态规划)最大子序和
(力扣)最大自序和说明给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解释很多人对这道题最开始都会有一个误区,就是 只要将连续的正数相加就肯定是最大的这种思想当然是有问题的 最简单的例子 1,...原创 2019-03-10 01:06:40 · 579 阅读 · 0 评论 -
(力扣---动态规划)使用最小花费爬楼梯
(力扣—动态规划)使用最小花费爬楼梯说明数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]...原创 2019-03-10 13:50:49 · 574 阅读 · 0 评论 -
(力扣---动态规划)最小路径和
(力扣)动态规划—最小路径和问题描述:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。思想:这是一道非常常规且基础的动态规划的题目,非常适合自己去理解dp的解题思路。本解采用最基础的解法。dp方程:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + g...原创 2019-03-07 14:33:15 · 846 阅读 · 0 评论 -
(力扣---动态规划)删除与获得点数
(力扣—动态规划)删除与获得点数问题描述给定一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入: nums = [3, 4, 2]输出: 6...原创 2019-03-27 23:43:53 · 265 阅读 · 0 评论