2020复试DP
ludan_xia
我很菜 但是我会 一步步地 努力!
展开
-
leetcode面试题 08.11. 硬币
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+...原创 2020-04-24 00:05:32 · 144 阅读 · 0 评论 -
leetcode 931. 下降路径最小和(easy)
给定一个方形整数数组A,我们想要得到通过 A 的下降路径的最小和。下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列。示例:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:12解释:可能的下降路径有:[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9][2,4,...原创 2020-04-13 23:56:39 · 73 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"w...原创 2020-04-13 23:46:10 · 61 阅读 · 0 评论 -
leetcode 877. 石子游戏(直接 DFS超时->区间DP)
亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子piles[i]。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回true,当...原创 2020-04-11 13:45:17 · 93 阅读 · 0 评论 -
lleetcode 983. 最低票价
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] 美元;一张为期三十天的通行证售价为costs[2] 美元。通行证允许数天无限制的旅行。 例...原创 2020-04-11 12:00:07 · 128 阅读 · 0 评论 -
leetcode 740 删除与获得点数(好题!!)
740. 删除与获得点数难度中等105给定一个整数数组nums,你可以对它进行一些操作。每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除每个等于nums[i] - 1或nums[i] + 1的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入: nums = [3, 4, 2]输...原创 2020-04-05 00:28:36 · 225 阅读 · 0 评论 -
leetcode 718. 最长重复子数组
给两个整数数组A和B,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100解题思路:定义dp[i][j]...原创 2020-04-04 22:14:11 · 124 阅读 · 0 评论 -
312. 戳气球(发现了 一篇 特别好的Dp!!!)
有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组nums中。现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得nums[left] * nums[i] * nums[right]个硬币。这里的left和right代表和i相邻的两个气球的序号。注意当你戳破了气球 i 后,气球left和气球right就变成了相邻的气球。...原创 2020-03-31 11:53:12 · 121 阅读 · 0 评论 -
leetcode 329. 矩阵中的最长递增路径 ( hard & 优先队列)
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[ [9,9,4], [6,6,8], [2,1,1]]输出: 4解释: 最长递增路径为[1, 2, 6, 9]。示例 2:输入: nums =[ [3,4,5],...原创 2020-03-31 10:49:55 · 121 阅读 · 0 评论 -
leetcode 392. 判断子序列
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:s ...原创 2020-03-30 13:39:43 · 69 阅读 · 0 评论 -
leetcode . 打家劫舍 | & ||
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...原创 2020-03-30 13:01:53 · 88 阅读 · 0 评论 -
leetcode 688. “马”在棋盘上的概率(dp & 记忆化搜索DFS)
已知一个NxN的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为(0, 0),最右下角的记为(N-1, N-1)。现有一个 “马”(也译作 “骑士”)位于(r, c),并打算进行K 次移动。如下图所示,国际象棋的 “马” 每一步先沿水平或垂直方向移动 2 个格子,然后向与之相垂直的方向再移动 1 个格子,共有 8 个可选的位置。现在 “...原创 2020-03-30 12:29:50 · 179 阅读 · 0 评论 -
leetcode 673. 最长递增子序列的个数
给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。注意:给定的数组长度不超过 2000 并且结果一定是3...原创 2020-03-30 11:00:07 · 132 阅读 · 0 评论 -
leetcode 646. 最长数对链
给出n个数对。在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当b < c时,数对(c, d)才可以跟在(a, b)后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。示例 :输入: [[1,2], [2,3], [3,4]]...原创 2020-03-29 22:26:31 · 132 阅读 · 0 评论 -
leetcode 650. 只有两个键的键盘
最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字n。你需要使用最少的操作次数,在记事本中打印出恰好n个 'A'。输出能够打印出n个 'A' 的最少操作次数。示例 1:输入: 3输出...原创 2020-03-29 09:54:29 · 131 阅读 · 0 评论 -
leetcode 647. 回文子串
647. 回文子串难度中等207收藏分享切换为英文关注反馈给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".示例 2:输入: "aaa"输出: 6说明: 6个回文子串: "a", "a...原创 2020-03-29 08:55:34 · 88 阅读 · 0 评论 -
leetcode 494. 目标和 ( DP-01背包变种 & DFS)
给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1 =...原创 2020-03-28 21:55:18 · 127 阅读 · 0 评论 -
leetcode 516. 最长回文子序列
给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。解题思路 :很显然,这是一个 区间Dp的问题,定义dp[i][j]:从i到j最长字符串的个数状态转移方程 dp[i,j] = ...原创 2020-03-28 21:34:01 · 135 阅读 · 0 评论 -
leetcode 542. 01 矩阵(BFS || Dp)
542. 01 矩阵难度中等158给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵...原创 2020-03-27 11:47:08 · 109 阅读 · 0 评论 -
多重背包_P1077_摆花_P2347砝码称重
题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nn种花,从11到nn标号。为了在门口展出更多种花,规定第ii种花不能超过a_iai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数nn和mm,中间用一个空格隔开。...原创 2020-03-24 00:33:07 · 161 阅读 · 0 评论 -
P2758 编辑距离(区间Dp!)
题目描述设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:1、删除一个字符;2、插入一个字符;3、将一个字符改为另一个字符;!皆为小写字母!输入格式第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于2000。输出格式只有一个正整数,为最少字符操作次数。输入输出样例输入 #1复制sfdq...原创 2020-03-22 22:53:39 · 215 阅读 · 0 评论 -
P1280 尼克的任务(一维线性,从后往前 消除后效性)
题目描述尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。尼克的一个工作日为nn分钟,从第11分钟开始到第nn分钟结束。当尼克到达单位后他就开始干活,公司一共有kk个任务需要完成。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只...原创 2020-03-22 21:40:02 · 133 阅读 · 0 评论 -
P1434 [SHOI2002]滑雪
https://www.luogu.com.cn/problem/P1434Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 ...原创 2020-03-21 11:49:57 · 110 阅读 · 0 评论 -
leetcode 377. 组合总和 Ⅳ(DFS&记搜 &Dp——超级好题)
377. 组合总和 Ⅳ给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。示例:nums = [1, 2, 3]target = 4所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。思路一:...原创 2020-03-18 11:51:11 · 127 阅读 · 0 评论 -
leetcode 413. 等差数列划分(区间Dp)
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列: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<=P<Q<...原创 2020-03-17 12:14:43 · 139 阅读 · 0 评论 -
leetcode 376. 摆动序列(LCS的相似题)
376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3)是正负交替出现的。相反, [1,4,7,2,5]和[1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个...原创 2020-03-17 11:22:55 · 77 阅读 · 0 评论 -
leetcode368. 最大整除子集(跟最长公共子序列有点像)
368. 最大整除子集给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。如果有多个目标子集,返回其中任何一个均可。示例 1:输入: [1,2,3]输出: [1,2] (当然, [1,3] 也正确)示例 2:输入: [1,2,4,8]输出: [1,2,4,8]通过...原创 2020-03-16 23:13:36 · 263 阅读 · 0 评论 -
leetcode343. 整数拆分(递推Dp)
343. 整数拆分给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明: 你可以假设n不小于 2 且不大于 58。解题思路:...原创 2020-03-16 13:02:14 · 149 阅读 · 0 评论 -
leetcode 338. 比特位计数 ( 找规律写出 Dp方程)
给定一个非负整数num。对于0 ≤ i ≤ num 范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为...原创 2020-03-16 12:32:32 · 75 阅读 · 0 评论 -
leetcode 买股票(1-4)
121. 买卖股票的最佳时机给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润...原创 2020-03-15 14:38:04 · 313 阅读 · 0 评论 -
leetcode 264. 丑数 II
编写一个程序,找出第n个丑数。丑数就是只包含质因数2, 3, 5的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1是丑数。 n不超过1690。思路 动态规划dp[i] 是否为丑数 状态转移方程 dp[num] = 1 (num%2...原创 2020-03-12 23:41:30 · 66 阅读 · 0 评论 -
leetcode 53. 最大子序和
53. 最大子序和给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。法一 动态规划class Sol...原创 2020-03-12 18:32:31 · 48 阅读 · 0 评论 -
C++ 数组初始化& INF的设置
一 在 函数里面的初始化 数组元素的值是未知的 (如果不赋初值 的话) 如果只设置 一个 初值的话二 如果数组设置为全局变量的话没有赋初值的 话 都默认为 0如果设置为 初值的话 ,也只有第一 会被 赋初值;三 INF的设置 0x3f3f3f3f的十进制是106110956...原创 2020-03-12 14:40:31 · 8726 阅读 · 0 评论 -
leetcdoe 279. 完全平方数(完全背包问题 同 硬币问题)
279. 完全平方数给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.先补充一个 硬币问题现有面值为c1,c2,...,Cm ...原创 2020-03-12 14:20:38 · 145 阅读 · 1 评论 -
leetcode 152. 乘积最大子序列
152. 乘积最大子序列给定一个整数数组 nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。minDP[i] 以 nums[i]结尾的乘积的 最小值...原创 2020-03-12 12:42:40 · 100 阅读 · 0 评论 -
leetcode 139 单词拆分(好题!)
139. 单词拆分难度中等340给定一个非空字符串s和一个包含非空单词列表的字典wordDict,判定s是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 ...原创 2020-03-10 11:04:10 · 363 阅读 · 0 评论 -
leetcode 120(数字金字塔)
120. 三角形最小路径和难度中等326给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。说明:如果你可以只使用O(n)的额外空间(n为三角形的...原创 2020-03-10 09:31:53 · 784 阅读 · 0 评论 -
leetcode 96. 不同的二叉搜索树
https://leetcode-cn.com/problems/unique-binary-search-trees/给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / ...原创 2020-03-08 13:51:20 · 52 阅读 · 0 评论 -
leetcode 64. 最小路径和(棋盘Dp)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。通过次数63,718提交次数98,361class Solution {public:...原创 2020-03-08 11:46:51 · 410 阅读 · 0 评论 -
leetcode 63. 不同路径 II(棋盘DP)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,...原创 2020-03-08 11:20:40 · 204 阅读 · 0 评论