自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 474. Ones and Zeroes

题意大概为给定指定数目的0和1,问最多可以组成多少个给定数组中的数。设数组d[i][j]表示i个0,j个1最多可以组成多少个,递推关系式为dp[j][k]=max(dp[j-zero(strs[i])][k-one(strs[i])]+1,dp[j][k]),分为是否选取当前元素,代码入下: class Solution { public: int zero(string s)

2017-07-14 17:16:26 182

原创 2. Add Two Numbers

题意大概为给定两个链表,每个链表表示一个逆序的整数,如2->4->3表示342,要求算出两个数之和并用一个链表储存。 只需按照两个链表的顺序相加并依次保存即可。其中进位的问题需单独考虑。代码如下: class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { in

2017-07-14 17:05:44 221

原创 K-clique problem

problem: Prove that the following problem is NP-complete:given an undirected graph G=(V,E) and an integer k, return a clique of size k as well as an independent set of size k,provided both exist.

2017-07-14 16:16:22 3404

原创 467. Unique Substrings in Wraparound String

题意为给定字符串S,S是“abcdef......xyz”无限循环得到的串,再给定字符串p,要求得到p的所有子串中包含于s的有多少。 首先比较容易想到的是要求出在字符串S1的基础上再加上一个字母A,所增加的所求子串数目K。用count表示在S1+A的末尾满足要求的连续的子串的长度,易知K==count。 如果用数组d[i]表示以S[i]结尾的S的子串所包含的目的串的数目,则d[s.size()

2017-05-30 21:30:34 186

原创 413. Arithmetic Slices Add to List

令K表示到当前位置时有多少个连续的数字可以组成要求的序列,对于下一个位置的数字,若仍旧满足差相同,则在原来的基础上加上K+1个,否则个数不变,虚幻到最后一个位置是得到结果,代码如下: class Solution { public: int numberOfArithmeticSlices(vector& A) { int count = 0; int

2017-05-18 22:04:50 183

原创 486. Predict the Winner

令数组dp【i】【j】表示从i到j第一个player可以选取到的最大值,dp【i】【j】=选取左边后可选取的最大值或选取右边后可选取的最大值,设left为选取左边后可取的最大值,left=nums[i]+sum[i+1][j]-dp[i+1][j];(在player1选取后,player2也会在i+1--j间选取最大值,那么剩下的便是player1选取的),同理right=nums[j]+sum[

2017-05-13 21:45:41 160

原创 516. Longest Palindromic Subsequence Add to List

题意即找到一个字符串中最长的回文子串(子串元素在原字符串中不一定是相邻的,只需顺序不变),利用动态规划的思想,首先要找到大部分和小部分的状态转移关系。假若用数组dp【i】【j】来表示第i到j个字符间最长的回文子串,那么假如的s【i-1】==s【j+1】,则dp【i-1】【j+1】=dp【i】【j】+2,否则dp【i-1】【j+1】=max(dp【i-1】【j】,dp【i】【j+1】)。代码如下:c

2017-05-07 21:16:44 173

原创 337. House Robber III

题意大概为在不允许抢劫二叉树中有直接联系的两个节点的前提下获得最大收益,对于每一个节点可以用一个数组res【0】来表示抢,res【1】表示不抢,若当前节点被抢,则左右子节点必然不会被抢,而若当前节点不抢,则左右子节点是否抢则取决于怎样的收益最大。代码如下: /** * Definition for a binary tree node. * struct TreeNode { *

2017-05-06 21:00:44 217

原创 53. Maximum Subarray Add to List

易知题意为找到数组中和最大的一个子数组,可利用一个循环找到对于每一个元素之前最大的连续的和,并判断加上该数后与原先数的大小,如大于则替换原先答案,代码入下:class Solution { public: int maxSubArray(vector& nums) { int x=nums.size(); int sum=0,ans=nums[0];

2017-03-21 13:42:23 207

原创 【LeetCode】241. Different Ways to Add Parentheses

题意为得出一个表达式各种组合后的结果,而且+、-、*没有优先级的差别。可以利用分治的思想来处理,遍历该表达式每次遇到操作符便将其分为左右两部分分别再次调用递归函数,再利用该处的操作符将两边得到的结果的集合联系起来,最后得到结果。 代码如下:vector diffWaysToCompute(string input) { vector ans; for(int i=

2017-03-11 19:21:26 163

原创 Leetcode 238. Product of Array Except Self

题意较为简单,即得到一组数据中除任意一元素外所有元素的积(难点为不能用到除法)。较为简单的可以想到用减法来代替除法,即每次用被除数减去除数的X倍,X从一开始累加,等到被除数为0时X的值就是商。但这种办法过于复杂会超时,可令X又逐渐增长优化为2的指数倍增长,利用循环来得到结果。例如:27 / 3, 27 - 3 , 27-2*3 ,....., 27-8*3=3, 3 - 3=0;  则x=8+1=

2017-02-23 22:52:04 168

原创 Leetcode 442. Find All Duplicates in an Array

阅读后可知题意为在不开辟新空间以及O(n)时间下找出一组数中出现两次的数(所有的数只可能出现一次或两次且1 要解决该问题最大的难点在于如何只利用现有数组的条件下记录每个数据的出现次数,而由每个数字只出现一次或两次联想到可以利用奇偶符号来代表出现次数。再进一步利用这两点可以得出方法:循环便利每一个元素,将元素值作为下标,对应下标的数若是负数则入vector,否则则将其变为负数,这样出现两次的数就会

2017-02-22 22:13:03 155

原创 495. Teemo Attacking

阅读后可知题意大概为:给定几个时间点,在每一个时间点后的一段时间内Ashe会处于中都的状态,中毒的时间不会累加只会覆盖,求Ashe的总中毒时间。 解题的主要问题在于去掉中毒重复的时间,可以对每一次中毒进行处理,若一次中毒持续的时间到了下次中毒的时间,在总时间上加上两次的时间差,否则则加上一次中毒可持续的最长时间。最后得到的值便是总的中毒时间。 代码如下: class Solution { p

2017-02-21 20:34:43 230

空空如也

空空如也

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

TA关注的人

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