动态规划
JustSleep
这个作者很懒,什么都没留下…
展开
-
LeetCode 279. Perfect Squares
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解题思路:动态规划: 第一种方法,对dp求解的顺序是固定的,只初始化了第...原创 2019-01-14 10:12:16 · 66 阅读 · 0 评论 -
LeetCode 264. Ugly Number II
编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。 n 不超过1690。解题思路:根据提示中的信息,我们知道丑陋数序列可以拆分为下面3个子列表:(1) 1x2, 2x2, 2x2...原创 2019-01-12 21:23:55 · 59 阅读 · 0 评论 -
LeetCode 221. Maximal Square
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4解题思路:动态规划:建立一个二维数组dp,dp[i][j]表示以(i, j)位置为右下点坐标所能组成的最大正方形的边长。首先第0行、第0列的值就按原来的第0行、第0列来进行初始化(有...原创 2019-01-12 19:28:45 · 62 阅读 · 0 评论 -
LeetCode 198. House Robber
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2019-01-12 11:15:07 · 59 阅读 · 0 评论 -
LeetCode 152. Maximum Product Subarray
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解题思路:如果前面得到一个较小的负数,和后面一个较大的负数相乘,得到的反而...原创 2019-01-12 10:52:27 · 79 阅读 · 0 评论 -
LeetCode 139. Word Break
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可...原创 2019-01-12 09:33:25 · 76 阅读 · 0 评论 -
LeetCode 121. Best Time to Buy and Sell Stock
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-01-11 20:00:22 · 55 阅读 · 0 评论 -
LeetCode 120. Triangle
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]解题思路:动态规划:建立一个一维数组,初始化为最底层值,依次向上构建一维数组,每遍历完一层得到的一维数组是,当前层到底层的最小值 //利用一位数组保存,防止改变原来...原创 2019-01-11 19:17:21 · 60 阅读 · 0 评论 -
LeetCode 64. Minimum Path Sum
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:动态规划:第一行第一列的元素值为前面所有元素相加,其他位置元素值是在上面的元...原创 2019-01-11 16:23:19 · 65 阅读 · 0 评论 -
LeetCode 62. Unique Paths
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?Input: m = 3, n = 2Output: 3Explanation:From the top-left corner, there are a total ...原创 2019-01-11 15:24:07 · 65 阅读 · 0 评论 -
LeetCode 53. Maximum Subarray
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路:动态规划问题:已知前k个元素的最大子序列和为curSum,如果添加第k+1个元素,由于连续子序列限制,如果curSum是小于零的,...原创 2019-01-11 15:04:38 · 99 阅读 · 0 评论 -
LeetCode 5. Longest Palindromic Substring
LeetCode 5. Longest Palindromic Substring题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: “babad”输出: “bab”注意: "aba"也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解题思路:1.动态规划假设dp[ i ][ j ]的值为t...原创 2019-01-11 12:21:15 · 70 阅读 · 0 评论 -
Leetcode 300. Longest Increasing Subsequence
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解题思路:动态规划:维护一个一维dp数组,初始化全为1,其中dp[i]表示以nums[i]为结尾的最长递增子串的长度,对于每一个nums[i],我们从第一个数再搜索到i,如果发现某个数...原创 2019-01-14 13:11:42 · 63 阅读 · 0 评论