动态规划
skymeteorite
这个作者很懒,什么都没留下…
展开
-
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 并且结果一定是32位有符号整数。方法:dp[n]为以nums[n]结尾最长递增子序列的长度,counter[n]表示nums原创 2020-08-08 14:30:21 · 239 阅读 · 0 评论 -
leetcode 1139. 最大的以 1 为边界的正方形
给你一个由若干 0 和 1 组成的二维网格grid,请你找出边界全部由 1 组成的最大正方形子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1:输入:grid = [[1,1,1],[1,0,1],[1,1,1]]输出:9示例 2:输入:grid = [[1,1,0,0]]输出:1 提示:1 <= grid.length <= 1001 <= grid[0].length <= 100grid[i][j] 为 0 或 1方原创 2020-08-01 21:55:27 · 273 阅读 · 0 评论 -
leetcode 面试题 08.14. 布尔运算
给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。实现一个函数,算出有几种可使该表达式得出 result 值的括号方法。示例 1:输入: s = "1^0|0|1", result = 0输出: 2解释: 两种可能的括号方法是1^(0|(0|1))1^((0|0)|1)示例 2:输入: s = "0&0&0&1^1|0", resu原创 2020-07-30 15:56:48 · 1407 阅读 · 0 评论 -
leetcode 877.石子游戏
亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。 示例:输入:[5,3,4,5]输出:true解释:亚历克斯原创 2020-07-28 21:39:10 · 130 阅读 · 0 评论 -
leetcode 338. 比特位计数
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]方法一:n&(n - 1)将n的二进制最后一个1变为0class Solution { public int[] countBits(int num) { int[] ans = new int[num + 1];原创 2020-07-28 21:34:17 · 99 阅读 · 0 评论 -
leetcode 198. 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后...原创 2020-02-06 12:59:07 · 80 阅读 · 0 评论 -
leetcode 70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...原创 2020-02-05 12:54:44 · 87 阅读 · 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] ...原创 2019-12-28 21:36:14 · 87 阅读 · 0 评论 -
leetcode 121.122.123.188.309.714 买股票系列
文章转载自:一个方法团灭 6 道股票问题很多读者抱怨股票系列问题奇技淫巧太多,如果面试真的遇到这类问题,基本不会想到那些巧妙的办法,怎么办?所以本文拒绝奇技淫巧,而是稳扎稳打,只用一种通用方法解决所用问题,以不变应万变。这篇文章用状态机的技巧来解决,可以全部提交通过。不要觉得这个名词高大上,文学词汇而已,实际上就是 DP table,看一眼就明白了。先随便抽出一道题,看看别人的解法:int...转载 2019-11-02 19:34:17 · 174 阅读 · 0 评论 -
leetcode 53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。方法:最大连续子段和,动态规划方法动态规划的是首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 ans如果 sum > 0,则说明...原创 2019-10-31 12:40:45 · 54 阅读 · 0 评论 -
动态规划-递推
hdu2044http://acm.hdu.edu.cn/showproblem.php?pid=20441到n的路径数f[n]有两种来源,f[n-1]的路径,f[n-2]的路径编号a到b的蜂房可以看作编号1到b-a的蜂房#include &amp;amp;lt;iostream&amp;amp;gt;using namespace std;long long f[55];int n;int main()...原创 2018-10-16 15:33:06 · 1247 阅读 · 0 评论 -
最小邮票数 01背包
https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1?tpId=40&tqId=21345&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。 如,有1分,3分,3分,3分,4分五张邮原创 2018-03-01 11:33:14 · 253 阅读 · 0 评论 -
拆分为2的幂的和的种数
https://www.nowcoder.com/practice/376537f4609a49d296901db5139639ec?tpId=40&tqId=21339&tPage=1&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking 有递推关系 当n=2k+1为奇数时,f(2k+1)=f(2k)。差别在于奇数多一个1原创 2018-02-27 21:21:31 · 592 阅读 · 0 评论 -
dp常见问题
poj1163 http://poj.org/problem?id=1163 数塔 dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];#include <iostream>#include <cstring>using namespace std;int a[105][105];int dp[105][1...原创 2018-02-27 20:23:36 · 732 阅读 · 0 评论 -
hdu2602 01背包
01背包模板,只是存在体积为0的物品且有价值#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=1010;int v[maxn];int w[maxn];int dp[maxn][maxn];int main(){ int t; int n,c;原创 2018-02-03 23:51:02 · 110 阅读 · 0 评论 -
01背包
n个物品重量为w[i],价值为v[i],有容量为m的袋子,最多能得的价值,记得以前分不清他和贪心的区别,贪心法是每一步的最优解就是整体的最优解(局部最优)。01背包是属于动态规划,每一步的解不一定导致整体的最优解(整体最优),由于物体不可分割,贪心算法可能最后会有缝。学习了其他人的文章,例子题目描述: 假设山洞里共有a,b,c,d ,e这5件宝物(不是5种宝物),它们的重量分别是2,2,6,...原创 2018-02-03 23:49:19 · 342 阅读 · 0 评论