自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (4)
  • 收藏
  • 关注

原创 371. Sum of Two Integers

这是一道比特运算题。我们先假设a 和b两个数都为自然数,那么这道题就可以看成是连个字符串相加 Add Two Numbers 的延伸题,很简单了。但是记住,一定不要对任何对结果有影响的数数进行开头或者结尾补零,因为正数和负数在表达方式上是不一样的。class Solution {public: int getSum(int a, int b) {

2016-07-18 01:01:04 264

原创 357. Count Numbers with Unique Digits

这道题乏善可陈。最基本的dfs 和高中概率题解法一:dfsint countNumbersWithUniqueDigits(int n) { unordered_set used; int res=1; helper(res, used, n); return res; } void helper(i

2016-06-24 14:06:16 233

原创 333. Largest BST Subtree

这道题是 98. Validate Binary Search Tree 的进阶。最好先想到的方法就是对于每一个subtree判断他是不是valid BST,如果是的话计算size。这样的解法问题就在于,时间复杂度太高了。class Solution_largest_BST_simple{public: int largest (TreeNode* root){

2016-06-21 02:16:39 336

原创 98. Validate Binary Search Tree 和延伸

首先来说最简单的解法。因为要验证的树是BST,那个当我们pre-order遍历的时候,得到的结果将会是一个升序数组。所以每访问到一节点,我们只用判断当前节点是不是大于上一个访问的节点的值就可以了。需要注意的是,如果维护一个vector保存所有之前访问过的节点的值,那么只用int类型

2016-06-20 11:45:01 250

原创 206, 92, 65. Reverse Linked List 系列

Reverse Linked List是典型的链表头插法的实例。头插法比较简单易懂,条理清晰,是做很多linked list题目的关键。首先用最简单的Reverse Linked List这道题举例,简单说明一下什么是头插法。class Solution {public: ListNode* reverseList(ListNode* head) { if(hea

2016-06-04 11:34:00 275

原创 96. Unique Binary Search Trees

很容易想到迭代的方法去做。我自己感觉这个迭代有一点点dc的意思在里面。int numTrees(int n) { if(n<=1) return 1; int res=0; for(int i=0;i<n;++i){ res+=numTrees(i)*numTrees(n-1-i);

2016-05-01 15:00:59 192

原创 150. Evaluate Reverse Polish Notation

int evalRPN(vector& tokens) { vector memo; int res=0; for(auto i:tokens){ int temp=0; if(i=="+"||i=="-"||i=="*"||i=="/"){ int second = m

2016-04-30 15:41:04 265

原创 227. Basic Calculator 2

这道题和 282. Expression Add Operators(http://blog.csdn.net/revoir/article/details/51167848) 非常相似。把相乘和相除集体看成一个计算单元,加减分隔开的计算单元一个个的放到memo里面。这个方法要过两遍。int calculate(string s) { vector memo;

2016-04-29 14:43:21 187

原创 224. Basic Calculator

这道题最traverse的解法就是,对于位于i的符号,计算在他前面的结果。如果遇到(,那么就保护现场,刷新临时变量开始下一个计算。遇见)说明当前小节结束,merge当前的临时变量和stack最顶端保留的计算符号和结果。代码条路清晰,结构冗余。int calculate(string s) { stack memo; int res = 0;

2016-04-28 13:42:13 251

原创 174. Dungeon Game

这是path sum,机器人走迷宫系列的一道hard 新题。难点在于当前格子的血量计算有好几种情况,实现起来有些复杂。1. 当前空格是血瓶,那么所需血量就是前面一个格子需要的血量减去血瓶的补给。如果血瓶的补给多余需要的,当前所需血量变为1。memo[i][j]=max(1, pre-map[i][j])   map[i][j]>=02. 当前空格是敌人,所需血量就是前面格子减去打怪兽要

2016-04-27 06:41:28 163

原创 64. Minimum Path Sum

这道题的解法和unipue path1一模一样。就不多说了。int minPathSum(vector>& grid) { if(grid.size()==0) return INT_MAX; int m=grid.size(); int n=grid[0].size(); vector memo(n,grid[0][0]);

2016-04-25 13:11:32 182

原创 63. Unique Paths II

解法和unique path 1极其相似,多了几个边界条件。坑:1. 有block的时候需要初始化。在初始化的过程中,遇到一个block后面去安为0.2. 初始化第一行的时候要单独做,初始获第一列的时候可以再for循环嵌套中作 3. 一开始的返回条件要包含第一个格子就是墙的情况int uniquePathsWithObstacles(vector>& obstacleGrid)

2016-04-25 12:54:56 339

原创 62. Unique Paths

这道题是二维的上楼梯。也是非常典型的dp题。最规整的解法就是新建一个二维数组,初始化第一行第一列为1,然后任意一个空格就是他左边和上边的值的和。有一个小点的注意,如果初始化memo数组为1.可以省去一些步骤。另外注意不要吃书画的时候神使鬼差memo[i][0]=iint uniquePaths(int m, int n) {        vector > memo(n,vecto

2016-04-25 12:31:41 211

原创 57. Insert Interval

这道题有三种解法,其中两种跟上一题,merge interval有些相似。1.直接把新的区间接在区间列表的后面,然后sort,merge interval。这么简单就不贴代码了。2. 从前往后遍历已知的区间集合,当找到第一个起始位置大于要插入区间起始位置的元素的时候,插入新的区间。然后按照merge interval的方法改变上一个插入的区间,或者插入新的区间。这个做法徐杰实现有挺

2016-04-22 15:21:47 270

原创 56. Merge Intervals

之前编辑了半天为什么不见了。。。这道题其实想法挺简单的,就是先对数组排序,然后从头开始遍历。对任意一个区间,从当前点开始,一个一个比较自身和后面的区间有没有交集,更新当前区间。一开始我的想法是inplace的实现,看似时间复杂度O(n),常熟空间复杂度,一看大家都是跟我方法基本一样,但是还要新建一个res数组,我心里觉得特别美。。 vector merge(vector& pairs)

2016-04-21 07:47:39 275

原创 50. Pow(x, n)

今天偷懒选到简单题写。这是一道典型的简单的二分法的题。先判断边界条件,然后进行“分”,然后在合并。坑, 主要都是边界条件:注意INT_MIN,0,1,负数幂class Solution {public: double myPow(double x, int n) { if(n==0) return 1; if(n==

2016-04-19 14:28:56 293

原创 284. Peeking Iterator

感觉这道题主要考OOD和cpp的语法坑:1.怎么在派生类里面调用基类的非虚函数2.hasnext()不能直接调用基类的hasnext(),因为如果peak了之后,基类的next已经往后移动了// Below is the interface for Iterator, which is already defined for you.// **DO NOT** modify th

2016-04-19 13:59:34 230

原创 152. Maximum Product Subarray

这是一道典型DP题。遍历一遍数组的同时,比较当前最大值和历史最大值。最终返回历史最大值。不过值得注意的一点是,因为负负得正所以如果当前值是负数,那么乘以之前的当前负数最小值就是当前最大值。小坑:初始化的时候,当前最大最小值赋予1,就可以从第一个元素开始遍历了。如果赋予nums[0]就需要从第一个元素遍历,for循环写起来稍微麻烦一些大坑:如果同时更改cur_max 和cur_min,并且计

2016-04-18 05:56:28 195

原创 58. Length of Last Word

这道题乍一看很简单,其实还是得稍微有一点点弯弯绕的。主要是边界条件特殊的case比较多。需要注意到几点:1. leading space2. tailing space3. 整个string全是空格4. 单词之前好多空格第一种解法是从前向后扫一遍,没遇到一个空格,记录下位置再继续找下一个空格知道字符串结束。这种方法需要去掉leadig/tailing空格。写起来有一点点繁琐

2016-04-18 05:28:53 169

原创 282. Expression Add Operators

这道题基本属于典型无脑dfs,跟word break有一点点的类似,都是给一个长串字母然后进行分割。但是要注意的是如果要添加乘法运算符,需要先减去上一个添加的值然后再添加当前新的值和上一个值的乘积。看了一下基本网上所有人都是这个解法,不知道lc那些400ms以内的人怎么做的。。这道题有几个药注意的点1. 持续追踪上次一运算用的值。在迭代的时候替换为当前值,记得根据当前运算符

2016-04-16 14:05:54 529

原创 241. Different Ways to Add Parentheses

题干:Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +,- and *.Example 1

2016-04-15 13:53:16 241

原创 70. Climbing Stairs

这是一道hello word难度的的DP题, 有点像斐波那契额数列。当前台阶的步数=上一个台阶的步数+上上个台阶的步数。由于只需要前两个变量,所以不需要记录整个过程。O(n)+O(1)解法:class Solution {public: int climbStairs(int n) { if(n<=1) return 1;

2016-04-14 13:25:12 205

原创 148. Sort List

题目:Sort a linked list in O(n log n) time using constant space complexity.这道题是一道中等难度的题,实现稍微有一点点复杂。算法很简答就是merge sort。1. 我的未优化代码和一丢丢优化class Solution {public: ListNode* sortList(ListNode*

2016-04-13 14:38:21 269

原创 圆渣的刷题博客

gg加面gg之后,再次得到feedback说good algorithm,bad coding。之前断断续续的刷题确实不行。已经浪费两年了,这次怎么着也得狠刷一年,明年一月再战。下定决心 不怕牺牲 排除万难 争取胜利 = =但是希望也不要牺牲。。。。

2016-04-13 13:47:37 346

北京邮电大学 java 课设作业

北京邮电大学 大二下 java 课程设计 card的九宫格程序代码 高分程序

2011-09-18

Eclipse 安装与使用

对于JAVA 的初学者 IDE 的安装是一个很纠结的问题 希望这份指南能有所帮助

2011-09-18

GRE真题2002——2006

相信对于即将出国考GRE的人来说 执一份很好的资料 尽管已经改为新 G 但是老题还是很有参考价值

2011-09-18

一个很赞的演示文稿 4页 ppt格式

本人自己做的一份高分作业, 对照一份pdf的模板,相信对于企业的presentation会很有帮助

2011-09-18

空空如也

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

TA关注的人

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