dp
码奴生来就只知道前进
我的GitHub账号:www.github.com/Mrhuangyi
展开
-
ZCMU1261
1261: 采药Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 240 Solved: 116[Submit][Status][Web Board]Description辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到原创 2017-11-11 19:04:02 · 258 阅读 · 0 评论 -
63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [...原创 2018-09-15 18:58:40 · 320 阅读 · 0 评论 -
64. 最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。分析:dp转移方程为: dp[i][j] = min(dp[i][j - 1], dp[...原创 2018-09-15 19:09:07 · 2014 阅读 · 0 评论 -
152. 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。 示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。分析:考虑到负负得正,所以维护两个变量,当前的最大值和最小值 动态转移...原创 2018-09-16 17:20:30 · 171 阅读 · 0 评论 -
120. 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...原创 2018-09-16 19:18:28 · 307 阅读 · 0 评论 -
96. 不同的二叉搜索树
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2...原创 2018-09-16 19:27:25 · 236 阅读 · 0 评论 -
279. 完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4. 示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.分析: 用一个数组来记录已有的结果,初始化为正无穷,外层循环变量i从0到n...原创 2018-09-17 14:21:17 · 709 阅读 · 0 评论 -
62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释: ...原创 2018-09-15 15:49:52 · 144 阅读 · 0 评论 -
139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分...原创 2018-09-22 22:06:07 · 568 阅读 · 0 评论 -
32. 最长有效括号
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”解法一:用栈LeetCode 20有一题是叫有效的括号,我们的思路是遇到左括号先入栈,遇到右括号,先判断栈是否为空,如果栈为空,直接retu...原创 2018-11-01 20:43:48 · 1194 阅读 · 0 评论 -
213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能...原创 2018-11-25 21:13:18 · 284 阅读 · 0 评论 -
字节跳动提前批第二批笔试题
第二批一共四道编程题…2道dp一道暴力搜索,一道田忌赛马,虽然有两道是经典题,但本菜鸡还是扛不住,宇宙条这难度还是让人服气的,另外面经就不写了,凉面写起来不舒服…第一题田忌赛马赤裸裸的田忌赛马,有兴趣的话可以去网上搜一搜hdu,没什么变动。有两队人,输入n,表示每队有n个人,接着输入两行,每行n个数字,每个数字代表这个队员的速度。两队进行赛跑,赢一局,加一分,输一局,减一分,平局,不加不...原创 2019-07-16 13:06:27 · 1763 阅读 · 5 评论 -
LeetCode 70. 爬楼梯
假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 步 + 1 步 2. 2 步 示例 2:输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1. 1 步 + 1 步 + 1 步...原创 2018-05-18 12:15:12 · 127 阅读 · 0 评论 -
746. 使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,...原创 2018-07-07 15:48:48 · 870 阅读 · 2 评论 -
北大上机题-放苹果
题目描述把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:5、1、1 和 1、5、1 是同一种分法,即顺序无关。输入描述:输入包含多组数据。每组数据包含两个正整数 m和n(1≤m, n≤20)。输出描述:对应每组数据,输出一个整数k,表示有k种不同的分法。示例1输入7 3原创 2017-11-27 21:19:09 · 306 阅读 · 0 评论 -
LeetCode 53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。这是一道很经典的算法问题了,很多算法书在讲到dp问题的时候都...原创 2018-05-18 11:59:31 · 255 阅读 · 0 评论 -
最大连续子序列和
最大连续子列和问题给定一个数字序列A1,A2,……An,求i,j(1<=i<=j<=n),使得Ai+….Aj最大,输出这个最大和。方法一:暴力枚举枚举左端点和右端点(即枚举i和j),需要O(n^2)的复杂度,求和有需要O(n)的复杂度,因此总复杂度为O(n^3)方法二:预处理记录前缀和记S[i] = A[0]+A[1]….+A[i],这样A[i]+…+...原创 2018-05-13 11:55:47 · 244 阅读 · 0 评论 -
最长不下降子序列LIS
最长不下降子序列LIS问题: 在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降的原始方法枚举每种情况,即对于每个元素有取和不取两种选择,然后判断序列是否为不下降序列。 如果是不下降序列,则更新最大长度,直到枚举完所有情况并得到最大长度。 但这种做法时间复杂度将达到O(2^n)显然不可取动态规划解法用dp[i]表示以A[i]结尾的最长不下...原创 2018-05-14 15:24:41 · 428 阅读 · 0 评论 -
LeetCode 5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: “babad” 输出: “bab” 注意: “aba”也是一个有效答案。 示例 2:输入: “cbbd” 输出: “bb”解决思路 1 —— 暴力枚举法暴力枚举法是这几种方法中最直观的求解, 求解过程中分别以每个元素为中间元素(奇数为最中间的一个数,偶数为中间元...原创 2018-05-15 16:22:44 · 249 阅读 · 0 评论 -
198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷...原创 2018-05-26 13:13:04 · 571 阅读 · 0 评论 -
01背包
01背包问题有n件物品,每件物品的重量为w[i],价值为c[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包 内物品的总价值最大。其中每件物品都只有1件。 样例:5 8 //n,v3 5 1 2 2 //w[i]4 5 2 1 3 //c[i]暴力枚举的想法枚举每一件物品放或者不放进背包,显然每件物品都有两种选择,因此n件物品就有2^n种情况, 显...原创 2018-05-16 19:22:11 · 137 阅读 · 0 评论 -
完全背包
完全背包问题有n种物品,每种物品的单件重量为w[i],价值为c[i]。现有一个容量为V的背包,问如何选取物品放入背包, 使得背包内物品的总价值最大。其中每种物品都有无穷件。完全背包与01背包的唯一区别:完全背包的物品数量每种有无穷件,而01背包的物品数量每种只有1件。令dp[i][v]表示前i件物品恰好放入容量为v的背包中能获得的最大价值对每种物品有两种策略:不放第i件物品...原创 2018-05-16 19:42:38 · 157 阅读 · 0 评论 -
L2-008 最长对称子串(25 分)
L2-008 最长对称子串(25 分) 对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定”Is PAT&TAP symmetric?”,最长对称子串为”s PAT&TAP s”,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symm...原创 2018-05-29 15:31:40 · 726 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3 说明:你可以假设...原创 2018-06-17 19:28:26 · 873 阅读 · 0 评论 -
1143. 最长公共子序列
题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两...原创 2019-10-09 19:02:26 · 259 阅读 · 0 评论