自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 leetcode174——Dungeon Game

题目大意:骑士从二维地牢的左上角开始走,要去救右下角的公主,地牢的每一个位置都有一个血量,大于0意味着增血,小于0意味着受伤,如果血量到达0或0以下就会死亡,问骑士的最初血量最少是多少才能救回公主分析:动规。从右下角开始走,倒推初始血量。 状态:dp[i][j]——在位置(i,j)时所需的最小血量(至少得有多少血) 初始化:dp[m-1][n...

2018-07-31 19:41:27 141

原创 leetcode336——Palindrome Pairs

题目大意:给出字符串数组,求出其中两两连接可以形成回文串的字符串对分析:字符串、哈希表。暴力枚举n²超时,利用哈希表遍历一次就能得到答案。将数组中的每个字符串逆序后存入哈希表,哈希值是字符串的原下标,然后遍历数组中的字符串,将字符串任意分成两部分,有两种情况: 1.字符串的左一部分(前缀)在哈希表中可以找到,并且右一部分(后缀)是回文串:说明这个字符串与在哈希表中找到...

2018-07-31 18:58:10 234

原创 leetcode712——Minimum ASCII Delete Sum for Two Strings

题目大意:给出两个字符串,删除其中的字母使得两个字符串相同,删除字母的代价是该字母的ASCII值,问最小代价是多少分析:动规。LCS的应用。类似编辑距离那道题,匹配两个字符串,如果字符相同就没有代价,如果不同就删除串1或串2的这一位。代码:class Solution {public: int minimumDeleteSum(string s1, string s2) {...

2018-07-31 17:52:54 322

原创 leetcode673——Number of Longest Increasing Subsequence

题目大意:给出乱序数组,求出数组中有多少组的长度等于LIS长度的分析:动规。普通的LIS题就是求出升序子序列长度,而这道题要求求出有多少个LIS,所以在dp外还需要一个ans数组来辅助记录。 状态:ans[i]——截止到i的LIS个数 初始化:ans[i]=1(每个数自己而言就是最大子序列,...

2018-07-30 22:37:16 189

原创 leetcode646——Maximum Length of Pair Chain

题目大意:对与对之间想要形成一个链就需要满足对1的第二个数小于对2的第一个数,问最长能形成多长的链分析:动规。LIS的应用。动规之前需要根据数组的第一个数先进行从小到大排序。代码:class Solution {public: static bool cmp(const vector<int>& a,const vector<int>&amp...

2018-07-30 19:31:47 270

原创 leetcode334——Increasing Triplet Subsequence

题目大意:问所给数组是否包含长度为3的上升子序列分析:动规/双指针。LIS的应用。但是这样的时间复杂度还是很高,有点没有必要,而且空间复杂度也有O(n)。还有一种方法,只需要O(n)的时间复杂度和O(1)的空间复杂度,只需要两个指针维护数组的最小值和次小值即可,当找到比次小值大的数时就说明有一个长度为3的上升子序列。(注:题目要求遍历一次/O(n)这种的,往往都是通过设置标识变量来维护某个值从...

2018-07-30 19:16:25 281

原创 leetcode639——Decode Ways II

题目大意:将给出的字符串译码,字符串可能包含数字0~9和*,1~26分别对应英文的二十六个字母,问给出的字符串有多少种译码方式,由于结果可能会很大,所以方法返回个数%1000000007分析:动规。两种情况:要么s[i]独立译码,方法个数为dp[i-1]*(s[i]这一位的译码方式个数) 要么s[i-1]...

2018-07-30 18:53:28 378

原创 leetcode516——Longest Palindromic Subsequence

题目大意:求出所给字符串中的最长回文子序列长度分析:动规。 状态:dp[i][j]——i~j的最长回文子序列长度 结果:dp[0][s.size()-1] 初始化:dp[i][i]=1 状态转移方程:if(s[i]==s[j]) dp[i][j]=dp[i+1][j-1]+2 ...

2018-07-29 17:16:40 257

原创 leetcode191——Number of 1 Bits

题目大意:求出n的二进制中有几个1代码:class Solution {public: int hammingWeight(uint32_t n) { int ans = 0; while(n != 0){ ans += n &amp; 1; n = n &gt;&gt; 1; }...

2018-07-29 17:05:23 110

原创 leetcode304——Range Sum Query 2D - Immutable

题目大意:给出二维数组,求出以左上角(row1,col1)和右下角(row2,col2)这两个点组成的矩形内的数字之和分析:动规。 状态:dp[i][j]——以左上角(0,0)和右下角(i,j)这两个点组成的矩形内的数字之和 结果:sum(row1,col1,row2,col2)=dp[i][j]-dp[i][j-1]-dp[i-1][j]-...

2018-07-29 15:58:15 124

原创 leetcode740——Delete and Earn

题目大意:给出整数数组nums,每当取出一个数时,比它大一和小一的数都会从数组中被删掉,问取出的数的最大总和分析:动规。和之前的leetcode198有联系。由于对于几个相同的数值i,要么全取出,要么全删除,所以我们将每个数值i都作为新数组house的下标,新数组就是代表了每个房子的价值(数值为i的数字总和就是房子i的价值),取了i就不能取i+1和i-1,也就是我们不能取相邻的两个房子。后面就...

2018-07-29 13:59:37 137

原创 leetcode337——House Robber III

题目大意:给出一个二叉树,每个结点代表一个房子里的金额,小偷不能偷相邻结点的钱,问最多能偷多少钱分析:树形动规。分别求出选择和不选择这个结点的两种情况下的dp值,取最大。代码:转载自class Solution { vector&lt;int&gt; getMoney(TreeNode* node) { vector&lt;int&gt; ret(2, 0);...

2018-07-28 17:08:56 206

原创 leetcode213——House Robber II

题目大意:给出按环形排列的一些住宅每家拥有的钱数,如果要求不能同时抢劫相邻的两家,问最多能抢多少钱分析:动规。和leetcode198一样的动规。由于这道题按环形排列,也就是说第一个和最后一个不能同时被抢,所以分别算出不抢第一个和不抢最后一个的金额,取较大的一个代码:class Solution {public: int rob(vector<int>&...

2018-07-28 16:24:14 121

原创 leetcode697——Degree of an Array

题目大意:找出数组中出现频率最高的数所在的子数组的最小长度分析:数据结构的考察。我们需要记录每个数第一次和最后一次出现的位置,如果在这两个位置之间数字出现次数等于原数组最高频数字的出现次数,那么这就找到了一个候选子数组,也就是说最终答案就是候选子数组中最短的一个。代码:转载自https://blog.csdn.net/sinat_31790817/article/details/78349...

2018-07-28 15:49:18 194

原创 leetcode152——Maximum Product Subarray

题目大意:给出一个数组,求出乘积最大的连续子数组分析:动规。 乘法和加法的不同之处在于它的符号问题能够造成很大影响,如果当前数为负数,乘上之前的最小数会变为最大数,而当前数是正数时,乘之前的最大数才是最大数,所以在求解时要维护两方面的dp状态,一个是之前的最大值,一个是之前的最小值,由此得出全局最大值。 dpMax[i] =max(nums...

2018-07-28 15:04:43 135

原创 leetcode123——Best Time to Buy and Sell Stock III

题目大意:给出每天的股票价格,最多可以进行两次的买进卖出,问经过这些天能够赚取的最大利润是多少分析:类似leetcode121,这道题可以分成两个子问题求解,从i这个位置分成两半,分别求出每一半的最大收益,让两半相加的收益最大的i就是能够取得最终最大利润的位置。代码:转载自http://blog.sina.com.cn/s/blog_a89440490102x0rj.htmlpubl...

2018-07-28 14:09:58 120

原创 leetcode122——Best Time to Buy and Sell Stock II

题目大意:给出每天的股票价格,可以进行多次的买进卖出,问经过这些天能够赚取的最大利润是多少分析:贪心法。贪心策略——每次有利可赚就要及时赚。我们算出每两天之间的价格差值,只要大于0就说明是有利润的,进行这个交易即可,否则不进行交易。(注:如果是一直递增,这样两两差值相加和首尾差值是相同的)代码:转载自https://leetcode.com/problems/best-time-to-bu...

2018-07-28 13:20:40 118

原创 leetcode108——Convert Sorted Array to Binary Search Tree

题目大意:给出升序数组,根据数组构建平衡二叉搜索树分析:dfs。由于数组是升序的,所以每次找到中间节点即为根节点,左侧就是二叉树的左子树,右侧就是二叉树的右子树,递归建树即可。有点类似二分法的感觉。由于每次都是平均分配,所以是平衡树。代码:/** * Definition for a binary tree node. * struct TreeNode { * int...

2018-07-24 22:22:28 109

原创 leetcode106——Construct Binary Tree from Inorder and Postorder Traversal

题目大意:根据给出的中序和后序遍历的序列构建二叉树分析:dfs。与上一题105同理递归求解代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int...

2018-07-24 19:13:54 130

原创 leetcode105——Construct Binary Tree from Preorder and Inorder Traversal

题目大意:根据所给的前序和中序遍历的二叉树序列构建出二叉树分析:dfs。由于前序遍历时的第一个结点就是根节点,在中序遍历的序列中位于根节点左侧的就是左子树,右侧的就是右子树,所以可以递归建树代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; ...

2018-07-24 18:48:48 112

原创 leetcode103——Binary Tree Zigzag Level Order Traversal

题目大意:蛇形层次遍历二叉树分析:bfs代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),...

2018-07-24 18:04:06 103

原创 leetcode102——Binary Tree Level Order Traversal

题目大意:层次遍历二叉树分析:bfs代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r...

2018-07-24 17:54:33 86

原创 leetcode630——Course Schedule III

题目大意:给出n个课程的信息,每个课程信息是一个二维数组,表示课程的耗时和deadline,问最多能完成这些课程中的多少分析:贪心法。贪心思想——按课程的deadline从小到大排序,因为越需要早点结束就意味着越需要尽快安排它被上完,当我们加入一个课程却发现上完它的时间超过了它的deadline时,就需要将已经安排的课程中最耗时的一个课程去掉,这一点需要用一个优先及队列来辅助存储。代码:转...

2018-07-24 17:02:00 354

原创 leetcode310——Minimum Height Trees

题目大意:给出一颗无根树,问以哪个节点为根能使得树的高度最小分析:拓扑排序。要找最小高度的根节点,就是找整个图中最中心的点,也就是距离所有叶节点最远的结点。拓扑排序的思想,每次都取出图中入度为1的结点,删除这些节点并将与他们相邻的结点和他们之间的边删掉,就像剥洋葱一样,逐层删除叶节点,这样最后剩下的结点就是最中心的结点(只可能是一个或者两个)代码:class Solution {p...

2018-07-23 22:26:06 215

原创 poj1384——Piggy-Bank

题目大意:给出不同面值的金币的面值及重量,问所给重量的猪罐中最少有多少钱输入:金币种类数T          空猪重量E 猪罐装满后的重量F          第i中面值的金币的价值pi  重量wi(共T行)输出:如果刚好可以装满则输出:The minimum amount of money in the piggy-bank is 最小钱数.          如果不能刚好装满则输出:This ...

2018-07-11 07:49:57 238

原创 poj2287——Tian Ji -- The Horse Racing

题目大意:田忌和齐王赛马,各有N匹马,速度不同,赢了得200分,输了扣200分,问田忌最后赛马能得到的最高分是多少输入:N          田忌第i匹马的速度(共N个,空格间隔)          齐王第i匹马的速度(共N个,空格间隔)输出:最高得分分析:贪心法。主要原则:尽可能的消耗齐王的快马,消耗自己的慢马。                      三条原则:1.田忌最快的马&gt;齐王最...

2018-07-09 22:22:41 343

原创 poj1017——Packets

题目大意:将高度相同的小盒子装入6*6的大盒子中,正方形底面的小盒子有六种型号,底面边长分别为1~6,问最多用几个大盒子输入:六中型号的小盒子的个数         结束:六个0输出:最小大盒子个数分析:贪心法。代码:转载自https://blog.csdn.net/whuxiaoqiang/article/details/7705380#include &lt;stdlib.h&gt;#inc...

2018-07-09 19:48:34 161

原创 poj2393——Yogurt factory

题目大意:酸奶厂要根据N周的顾客需求量来生产酸奶并出售,每周的单位生产成本和需求量不同,分别为Ci和Yi,每周生产的多余酸奶可以储存在仓库,每单位酸奶收取储藏费用S,问酸奶厂满足顾客需求的最低成本输入:N S (1 &lt;= N &lt;= 10,000)  (1 &lt;= S &lt;= 100)           Ci Yi(共N行)(1 &lt;= Ci &lt;= 5,000) (0...

2018-07-09 17:22:27 117

原创 poj1700——Crossing River

题目大意:只有一艘船,船上最多载两个人,问让所有人过河的最短时长代码:转载自https://blog.csdn.net/vmurder/article/details/40826151#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;algorithm&gt;#define N 1005using namespace s...

2018-07-09 10:51:20 170

原创 hdu1166——敌兵布阵

输入:case个数T阵地个数N第i个阵地的人数a[i]指令(四种:Add x y表示x阵地加y个人 Sub x y表示x阵地减y个人 Query x y表示查询x到y阵地的总人数 End表示结束case)代码:#include &lt;cstdio&gt;#include &lt;cstri...

2018-07-09 07:54:54 168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除