
c++
文章平均质量分 69
yongyi_yang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode刷题之旅——338Count Bits
因为感觉大多数easy的题目对于我们来说稍微有些简单,所以这回选择了一个middle中通过率最高的题目来做,看看到底middle的难度有多大。 这道题的题目意思是,给我们一个数,让我们计算出从0开始到这个数中间的所有数字,他们的二进制表示方法中有多少个1,并将统计结果放到一个数组中。 比如给定数字5,{0,1,2,3,4,5}分别统计出来的结果就是{0,1,1,2,1,2},以原创 2016-09-07 01:30:36 · 646 阅读 · 0 评论 -
leetcode刷题之旅——474. Ones and Zeroes
这道题目是典型的二维背包问题,在动态规划中为middle,通过率35%的一道中级题目。题目大意: 给定我们一个01字符串数组,然后给定我们固定的1的数量和0的数量。问的是我们最多可以用这些1和0,组成多少个字符串。固定的1和0的数目就是我们背包的体积,而每个字符串的价值都是1,而消耗的空间就是组成该字符串的1和0的数量,价值为都是1。例原创 2017-01-07 12:12:40 · 466 阅读 · 0 评论 -
leetcode刷题之旅——376. Wiggle Subsequence
该题是一道中等难度,通过率34%的贪心算法题目,但是通过动态规划也可以对该题进行求解。题目大意: 给定一个数组,让我们求解该数组的最大摆动子序列。何谓摆动子序列呢,就是一个大一个小,或者用相邻差值来说的话就是一个正数一个负数这样的序列就是摆动序列。例子: Input: [1,7,4,9,2,5]Output: 6The ent原创 2016-11-23 19:34:46 · 333 阅读 · 0 评论 -
算法第8章习题——8.13题
a) 这个问题是属于 P 的,解法如下: 选取任意一个V−L 中的顶点s,以s为根节点进行深度优先搜索,每当访问到L中的顶点时,就停止向下扩展,使得L中的顶点成为叶节点。如果深度优先搜索完成后,所有顶点都已经被访问到,这颗生成树即是满足条件的。否则就说明这样的生成树不存在。b) 是 NP 完全的,因为恰好有一个叶节点的生成树即是一条Rudrata 路径。 c) 是 N原创 2016-11-19 21:55:40 · 327 阅读 · 0 评论 -
leetcode刷题之旅——70. Climbing Stairs
继续做一道easy的动态规划题目,通过率38%题目大意: 现在给定一个有n个台阶的楼梯,你现在在最下面,而且你每步只能迈一个或者两个台阶。如果要你到达楼梯的顶端,你可以采用几种不同的方法来走。算法: 用动态规划算法来解决这道题目,首先我们考虑第一步的问题。第一步可以走两个台阶,也可以走一个台阶,所以就分了两种情况。一种情况是,我们第一步只走一个台阶,这样原创 2016-11-15 21:32:29 · 224 阅读 · 0 评论 -
leetcode刷题之旅——121. Best Time to Buy and Sell Stock
一道动态规划当中的简单题目,先拿简单题目加深自己对动态规划的理解。题目大意: 给定我们一个数组,里面的第i个数字代表第i天的袜子价格,我们所需要做的就是以低价买入,高价卖出。最后我们返回我们可以获得利润的最大值。例子: example 1: Input: [7, 1, 5, 3, 6, 4]原创 2016-11-15 21:10:27 · 398 阅读 · 0 评论 -
leetcode刷题之旅——112. Path Sum
这道题目是easy题目当中通过率为32%的题目,是DFS算法的一道比较典型的题目。题目大意: 给定一个二叉树和一个sum值,如果在该二叉树中可以找到一个从根节点到叶节点的路径,通过节点值的和等于sum值,就返回true。例子: Given the below binary tree and sum = 22,原创 2016-11-30 22:34:06 · 336 阅读 · 0 评论 -
leetcode刷题之旅——91. Decode Ways
选择了动态规划题目当中通过率18%的一道中级题,比之前做的简单题要复杂很多,虽然代码量很少。题目大意: 给定我们一个映射,1-26对应着A-Z这26个字母。现在我们要对一封信进行解密,这封信是用英语写的,然后以这种映射关系被编码成了数字信。我们要做的就是将其解码,计算出一共有多少种解码方式。例子: For example,原创 2016-11-15 21:45:21 · 373 阅读 · 0 评论 -
leetcode刷题之旅——55. Jump Game
做过了贪心算法中比较简单的一道题,选择了这道通过率百分之二十多的题目,虽然也是middle,但是感觉比前面的那道题目难想很多。题目大意: 给定一个非负整数的数组,现在我们目的是要跳到最后一个数,我们现在的位置是第一个数字所在的位置。那么我们一次最大能条多少步呢?我们每次最大能跳的步数就是我们当前坐在位置的数字,比如我们现在所处的位置的数字是5,我们就可以选择往后跳5步或者比5原创 2016-11-03 23:26:17 · 275 阅读 · 0 评论 -
leetcode刷题之旅——406. Queue Reconstruction by Height
本周和上周都讲了贪心算法,所以在leetcode上面挑了Greedy的算法题目来做。首先这道题目是所有贪心算法里面最简单的,是middle里面通过率最高的一道题目。题目大意: 给定一个队列,每一个元素代表一个人,每个人有两个属性,一个是他自身的身高,另一个是排在他前面比他身高要高的人数。本题给定这样一个vector,用来盛放每个人的个人信息,然后让你按照每个人的这两个元素对这原创 2016-11-03 20:23:55 · 695 阅读 · 0 评论 -
leetcode刷题之旅——53. Maximum Subarray
本周写的第二道分治算法的题目,因为上次选择的是一道easy的题目,为了提升自己,这次选择了一道middle难度的题目。虽然这道题目是middle的,但是我还是想了很长时间。其实这道题目可以用动态规划直接用O(n)的复杂度来解决,代码也很简单,但是如果想要用分治法就比较难想一点。 先说一下动态规划的算法。就是初始化max和sum两个变量,一个代表最终的结果最大值,另一个用来选择是加原创 2016-09-12 23:13:48 · 484 阅读 · 0 评论 -
leetcode刷题之旅——169. Majority Element
本周学习了分治法,所以准备在leetcode中挑选几道分治算法的题目来写。然而分治算法题目当中只有一道是easy,其他都是middle或者hard的题目,让我很慌。所以先把这唯一一道easy的题目写出来,给自己长点自信。 这道题目的意思就是从一个数组当中找到出现次数大于n/2的那个数,即题目当中给我们的主元素。 先说一下对于这道题目,我的分治算法是怎样的。首先,原创 2016-09-11 22:01:02 · 349 阅读 · 0 评论 -
leetcode刷题之旅——66Plus One
因为以前对于C++有过编程基础,但是水平又不是那么高,所以选择了easy中通过率比较低的题目。66题就是一道通过率比较低的简单题型,通过率不到百分之四十。 首先分析一下题目的意思,本题给了一个用vector保存了各位数的数,然后让我们给这个数加一。 其实这道题就是让我们用数组来模拟一下整数的加法。 首先我们必须要知道这个数的位数,这很容易实现。其次我们还要设置原创 2016-09-07 00:35:39 · 431 阅读 · 0 评论 -
leetcode刷题之旅——215. Kth Largest Element in an Array
这道题目是分治算法中的一道题目,中等难度里面通过率为37%的一道求数组当中最大元素的一道题目。题目大意: 给定一个数组,然后给定我们一个数字代表第几大的数,比如这个数字为1,那么就是从这个数组当中挑选出第一大的数字。例子: For example, Given [3,2,1,5,6,4] and原创 2017-01-07 14:38:26 · 509 阅读 · 0 评论