自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode:Valid Palindrome 菜鸟解法

头尾指针解回文串

2015-03-10 23:50:39 318

原创 leetcode: Sum Root to Leaf Numbers 菜鸟解法

调试了很久,从最上层开始,每次增加10倍进入下一层,直到最后一层,把所有值一次加上,代码如下:class Solution {public: int sum=0; int sumNumbers(TreeNode *root) { if(root==NULL) return 0; calSum(root,0); retur

2015-03-10 21:32:28 260

原创 leetcode:Set Matrix Zeors 菜鸟解法

行列法解矩阵

2015-03-09 23:43:41 355

原创 leetcode:two sum 菜鸟解法

two sum 效果不好

2015-02-21 00:58:01 265

原创 Leetcode:Search a 2D Matrix 菜鸟解法

从右上角往左下角进行查找可以解决这个问题,不过我不想那么做,所以做了两次二分法,先行二分再列二分class Solution {public: bool searchMatrix(vector > &matrix, int target) { int m = matrix.size(); int left=0,right = 0,mid = 0

2015-02-20 17:13:20 299

原创 Leetcode:Path Sum 菜鸟解法

相对上题来说这题就简单多了。对于根节点来说,如果叶到根要满足和为sum,则必须左或右子树满足和为sum-root->val当左右均为null时,即为叶子节点。代码如下:class Solution {public: bool hasPathSum(TreeNode *root, int sum) { if(root ==NULL) return f

2015-02-20 15:40:11 266

原创 Leetcode:Binary Tree Maximum Path Sum菜鸟解法

做了很久的一题,以我很不成熟的想法,模模糊糊的感觉到要用动态规划,可是一直无法抽象出子问题后面通过慢慢尝试,画图,稍微有了点想法。对于任何一条路径,他一定有个最”高“的节点(也就是这条路径中最接近二叉树根节点的)对于这个最高节点而言,通过他的所有路径中最大的只有四种可能(节点自身,节点自身+左支值,节点自身+右支值,节点自身+左支值+右支值)我们可以找到这四个中的最大值,但是比如节

2015-02-20 15:00:26 405

原创 leetcode:Rotate Image菜鸟解法

这题想了很久,实在是找不到既要在原位,而且又很快速的方法,如果是matlab就好了...于是采用了最笨的一次把可能被影响到的四个点都搞定的方法,代码见下面class Solution {public: void rotate(vector > &matrix) { int n = matrix.size(); int temp;

2015-02-18 16:34:44 340

原创 Leetcode: Minimum path sum

又是一题动态规划,我获得的是到所有点的最小值,代码如下:class Solution {public: int minPathSum(vector > &grid) { int min[1000][1000] = {0}; if(grid.size()<=0) return 0; int m = grid.size();

2015-02-18 12:45:24 281

翻译 Leetcode:Unique Binary Search Trees: 菜鸟解法

Leetcode:Unique Binary Search Trees

2015-02-18 11:00:59 284

原创 Leetcode:Container with most water菜鸟解法

这题想很久啊...一直觉得只能把n*(n-1)/2 种情况全考虑到才能解决实际上用夹逼方法很容易就可解出来,从最左与最右看,如果左大于右,那怎么动左边都不可能让水增多,所以要移动右边,反之亦然,直到左右相碰代码如下class Solution {public: int maxArea(vector &height) { int left =0,resu

2015-02-17 20:34:30 244

原创 Leetcode:Remove Element 菜鸟解法

不太清楚这题考察的地方是什么...我遍历了一下就过了class Solution {public: int removeElement(int A[], int n, int elem) { int len = 0; for(int i =0;i<n;i++){ if(A[i]!=elem){ A

2015-02-17 17:15:43 263

原创 Leetcode:Linked List Cycle 菜鸟解法

这题确实没想出来,后面问了别人,别人提示了快慢指针才有所领悟。。。对于一个链表来说,判断他是否包含环其实很简单,一直循环下去没终止肯定是包含,next的为NULL了肯定不包含而快慢指针就像两个人跑圈,速度可能不一样,但是如果套圈了,那说明中途一定是遇到交点了,用类似的原理可以解决这个问题。代码如下:class Solution {public: bool hasCycle

2015-02-17 17:00:29 261

原创 Leetcode:Unique Paths

待修改,有更好的方法

2015-02-17 16:01:30 277

原创 Leetcode: Remove Duplicates from Sorted List 菜鸟解法

借这个机会学习了下链表,个人感觉链表就是为了找元素方便而产生的一种数据结构,感觉还挺有用。本题方法很简单,直接上代码

2015-02-17 14:38:33 285

原创 Binary Tree Inorder Traversal

二叉树的中序遍历

2015-02-17 11:10:44 283

原创 leetcode:Binary Tree Preorder Traversal菜鸟解法

正好昨天学习了二叉树的几种遍历,今天就演练一下前序遍历,根-左-右的顺序,递归实现很简单,代码见下,唯一的问题是不知道怎么弄个全局的变量,在下一题里我试试class Solution {public: vector preorderTraversal(TreeNode *root) { vector result,left,right;

2015-02-17 10:52:56 246

原创 Leetcode:Same Tree 菜鸟解法

判断二叉树相等的方法

2015-02-16 23:33:47 291

原创 leecode:Maximum depth of binary tree: 菜鸟解法

动态规划求二叉树深度

2015-02-16 21:53:50 380

原创 leetcode:Find Peak Elements 菜鸟解法

二分法

2015-02-16 14:35:36 271

原创 leetcode:Climbing Stairs菜鸟解法

一道动态规划题

2015-02-16 11:08:04 247

原创 leetcode:Majority Elements 菜鸟解法

位操作解Major Elements

2015-02-15 16:00:44 231

原创 leetcode:Sort Colors 菜鸟解法

这题不多说了 == 绝对的简单题,先数然后再赋值用while会简单点,我用的forclass Solution {public: void sortColors(int A[], int n) { int num[3]={0,0,0}; for(int i =0;i<n;i++){ num[A[i]]++;

2015-02-14 23:37:44 255

原创 leetcode:Find Minimum in Rotated Sorted Array II 菜鸟解法

感觉第二问比第一问男多了 TT 主要是需要考虑重复元素导致的不知道在二分法哪边的情况,比如1 0 1 1 1 1 和1 1 1 1 1 0 1我也没啥好方法,遇到这种就强制遍历更新了,之后我会回来再对这道题进行修改的,答案只是满足了能解决问题。class Solution {public: int findMin(vector &num) { int

2015-02-14 22:52:15 247

原创 leetcode:Find Minimum in Rotated Sorted Array 菜鸟解法

二分法解Find Minimum in Rotated Sorted Array问题

2015-02-14 19:55:42 231

原创 leetcode:Single NumberII 菜鸟解法

我也不知道算不算线性的方法,按每位循环,获得所有数在该位的二进制值,然后进行mod 3操作,然后累加起来class Solution {public: int singleNumber(int A[], int n) { int bit = 64,i=0,j=0,temp=0,result=0,base=1; for(i=0;i<bit;i++){

2014-12-23 23:47:00 311

原创 leetcode:Search Insert Position菜鸟解法

本来直接遍历就过了,后来大神说要用二分法,尝试写了一下,不知道这算不算二分?class Solution {public: int searchInsert(int A[], int n, int target) { int mid,left,right; if(target<=A[0]) return 0; if(target

2014-12-23 21:55:12 285

原创 leetcode:Divide Two Integers菜鸟解法

用位操作解leetcode divide two numbers问题

2014-12-23 21:07:07 328

原创 leetcode:Pow(x,n)菜鸟解法

数学推导 x的n次方,若x为奇数,则为x*x的(n-1)/2次方*x的(n-1)/2次方,若x为偶数,则为x的(n/2)次方的平方,用这种方式可以极大减少计算量我之前就是时间超时了好几回举例 2^16 原来需要循环16次,如果我们将其化简为(2^8)的平方,那只要算出2^8就可以了。代码如下:class Solution {public: double pow

2014-12-21 22:44:02 423

原创 leetcode:First Missing Positive 菜鸟解法

这题要求只能用常数个空间,不过int这个东西能表示的正整数本来也就是有限的,所以我们不妨设置一个数组index,数组的每个值等于该值index的整数出现的次数,找出第一个出现次数为0的正整数就好,代码如下:class Solution {public: int firstMissingPositive(int A[], int n) { int index[65536

2014-12-21 17:24:45 263

原创 leetcode:Sqrt(x) 菜鸟解法

本题要求对一个非负整数x,求他的平方根很容易想到构造形如(x/temp+temp)/2的形式,因为若temp大于根号x,则x/temp就会小于根号x,那么temp(next)=(x/temp+temp)/2 就会比原来更接近x/temp,两值间距会变小最终会在temp=根号x处收敛。代码如下:class Solution {public: int sqrt(int x)

2014-12-21 16:32:48 361

原创 leetcode:Single Number 菜鸟解法

利用异或解leetcode single number的问题

2014-12-21 16:08:26 309

原创 leetcode:Remove Duplicates from Sorted Array II 菜鸟解法

和I解法基本一样,没发现有什么特别的。class Solution {public: int removeDuplicates(int A[], int n) { int j=1; if(n<3) return n; for(int i=2;i<n;i++){ if(A[i]!=A[j-1]) A[++j] =

2014-12-15 23:44:47 332

原创 leetcode:Remove Duplicates from Sorted Array菜鸟解法

leetcode:Remove Duplicates from Sorted Array菜鸟解法 因为本人也是代码初学者,感觉可能比较适合大众口味

2014-12-14 22:53:55 249

原创 leetcode:Maximum Subarray 菜鸟解法

刚开始的思路和上面一道Maximum subarray product一样,用了各种复杂的表示,想的是这样,一个数组,他的最大和就是一直累加,若遇到负数,应保存负数前的值的和为临时最大,然后记录下这个负数,直到叠加的值超过这个负数,则应更新临时最大值,若叠加的过程中小于零了,则整段应该舍弃,从新的地方重新开始累加。这个想法说起来简单,实现起来也是调试了好几次,代码如下:class Soluti

2014-12-08 22:55:51 276

原创 leetcode: Maximum subarray product 菜鸟解法

生病了两天,好不容易病好了,挑了道看上去比较简单的题,没想到这么不好对付,用了足足三个小时。第一次提交时候,什么都没想就用了二重循环,结果显示TLE,仔细查过才知道是超时的意思...没办法开始各种改代码...我的想法是这样的,考虑由0分割开来的各个部分(如果没有0就说明整个数组是一个部分),对于这样的部分来说,若含有偶数个负数,那最大乘积就是所有元素之积,若含有奇数个(非1)负

2014-12-07 23:49:34 474

原创 leetcode: Reverse Integer 菜鸟解法

题目不难,让你尝试将整形倒着输出,我采用的方法是利用%获得每一位的数字,然后反序构造回那个int值,可惜,中途出现了好多小错误,改了很多回,尤其需要注意输出数字的正负,以及要写出数量超过整形表示范围的处理方式。class Solution {public: int reverse(int x) { int final[16]={0},i=0,sign=1; l

2014-12-03 00:54:53 256

原创 leetcode:Length of Last Word 菜鸟解法

这题感觉难度不大,找最后一个词,从最后一个字母找起的话会很简单,我是先识别了字符串的长度,然后从最后一个字符往前遍历,当字符落在A-z之间时,长度加1,对长度在0以上的情况进行判断,若当前字符为空,则表明单词结束,输出长度即可,若不为空则继续遍历。直到字符串结束。class Solution {public: int lengthOfLastWord(const char *

2014-12-02 21:07:57 239

原创 leetcode:add binary 菜鸟解法

笔者确实比较水,所以费尽千辛玩苦终于挑了一个好想比较简单的题,结果没想到还是不行...初始想法:设两个字符串分别为first和second,然后把他们两个转成整形后相加(每一位有三种可能,0,1,2),然后根据所得结果决定是否要进位,结束后输出字符串。程序如下所示,能通过几个案例,可是因为整形取值空间不够,所以输入很大时候就没辙了。

2014-11-30 23:13:18 496

原创 初来乍到,学习之路启程

每天看着周围的人在忙碌的编程学算法,突然觉得这样的生活才叫充实,于是决定效仿各大神,给菜的不行的自己一个目标,开这么一个博客来记录下点滴的成长。目前水平:简单的c语言知识基本掌握,不会c++,只能照猫画虎,不会数据结构,不会算法,不会什么复杂度分析最初目标:利用平常空余时间独立完成leetcode全部题目,先自己想,有不会的东西再去补课时间限定:三个月内预期结果:掌握一定数

2014-11-30 22:49:54 316

空空如也

空空如也

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

TA关注的人

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