leetCode
Trident_
这个作者很懒,什么都没留下…
展开
-
LeetCode 118. Pascal's Triangle
题目很简单,输入一个数字n,返回一个n行的杨辉三角。解题思路也很简单,我们知道杨辉三角的第n+1行第m+1列的元素为c(n,m)=n!/[m!(n-m)!]。所以我们写个一个函数可以返回c(n,m),再利用两重循环就可以填充这个杨辉三角了(可以看作一个二维矩阵)。我也是这么做的,写了一个函数先求n!,再求m!,(n-m)!,最后返回n!/[m!(n-m)!]。注意这里要考虑n=0,m=0以及n=m时原创 2016-05-24 14:53:25 · 447 阅读 · 0 评论 -
LeetCode 111.Minimum Depth of Binary Tree
题目大意是求一颗树的最小深度。从根节点到叶子节点每往下一层,深度加1,根节点的深度为1。 先贴代码: int m = 9999;int depth = 1;void dfs(TreeNode* root){ if(root->left == NULL && root->right == NULL){ if(depth<m){原创 2016-05-23 17:09:25 · 465 阅读 · 0 评论 -
LeetCode 102. Binary Tree Level Order Traversal
题目大意是把一颗树的所有节点记录下来,但是要求要以行为单位按根到叶子的顺序记录,而每一行又是从左到右记录。先贴代码再解释:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNod原创 2016-05-23 16:55:43 · 306 阅读 · 0 评论 -
leetCode 165. Compare Version Numbers
这道题是要我们比较两个版本号(就是那些软件的版本号)的大小。一开始我还奇怪这道题很简单怎么通过率这么低(17.7%)。做完之后我就知道我还是太年轻了= =一开始我是直接用atof函数把string转成double进行比较,然后就死在1.1和1.10的比较上了,很明显1.10>1.1 但转成double之后就会有1.1 = 1.1…于是我改成以‘.’为界,前面用一个int记录,后面用另一个int记录。原创 2016-06-02 18:26:25 · 454 阅读 · 0 评论 -
LeetCode 160. Intersection of Two Linked Lists
题目要我们求得两个链表的交叉点,如果没有就返回NULL。值得注意的是题目对于时间复杂度和空间复杂度是有要求的。用暴力的遍历时间复杂度会是O(n^2),就不符合题目要求了。这里我解题的思路是,如果两个链表有交叉点,那么从后往前数,数到某一个链表结束那么就一定会遇到交叉点。所以我把较长的链表的前面部分去掉,让两个链表等长之后就比两个链表有没有相同的节点,第一个相同的节点就是交叉点。这里还有一个小优化:在原创 2016-06-02 16:56:00 · 465 阅读 · 0 评论 -
LeetCode 101. Symmetric Tree
判断一棵树是否是镜像的,即左右对称。 一开始我想用中序遍历来进行判断,我认为镜像的树中序遍历的结果应该也是镜像的(以1/2点为中心左右对称) 代码如下:(这个代码是wrong answer的!)string ans;void tree(TreeNode* root){ if(root!=NULL){ tree(root->left); ans+=root原创 2016-05-18 22:45:58 · 297 阅读 · 0 评论 -
LeetCode 100. Same Tree
比较两个二叉树是否相同。 我们很容易想到这就是一个遍历树的变形的题目,于是我写了下面的代码: ps:这个代码是错的!!!!bool isSameTree(TreeNode* p, TreeNode* q) { if(p != NULL && q!=NULL){ if(p->val == q->val){ return isSameTree(p->l原创 2016-05-17 16:50:06 · 448 阅读 · 0 评论 -
LeetCode 88. Merge Sorted Array
88、 Merge Sorted ArrayGiven two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: You may assume that nums1 has enough space (size that is greater or equal to m原创 2016-05-17 15:49:08 · 316 阅读 · 0 评论 -
70. Climbing Stairs
爬楼梯,一次可以爬1阶或者2阶,问爬n阶楼梯一共有几种方法?一开始我想的是: 这个题目可以转化成函数表达式用f(n)表示有几种方法跳到n阶, f(n)=f(n-1)+f(n-2) ,这就和斐波那契数列相似,于是我决定秀一手递归:int climbStairs(int n) { if(n < 1) return 0; else if(n ==原创 2016-05-16 16:08:48 · 329 阅读 · 0 评论 -
19.Remove Nth Node From End of List
19.Remove Nth Node From End of List大三准备面试,开始做leetCode,遇到有意思的题在这里做个总结。 这是一道easy题,但我已经很久没用过链表所以还是做个总结。原创 2016-05-05 12:22:17 · 444 阅读 · 1 评论 -
LeetCode 66. Plus One
给一个非负的数(其表示方法为用一个数组来存储),然后我们要得到这个数加1之后的数(同样也用数组表示)AC代码:vector<int> plusOne(vector<int>& digits) { int ok = 0; int i = digits.size()-1; while(ok == 0){ if(digits[i] < 9){原创 2016-05-15 19:30:10 · 253 阅读 · 0 评论 -
LeetCode 67. Add Binary
这就是一个二进制的加法题,两个数都是string的形式,这种题首先要把两个字符串变得长度一致(短的那个前面补0),然后再根据二进制的加法法则进行处理就行了,注意二进制的两位相加总共有四种答案,0(0+0),1(1+0 / 0+1),2(1+1),3(1+1+1(进位得来的))。要分成三种情况进行考虑: 无进位直接保留答案:0、1 进位且保留0:2 进位且保留1:3以此来做这道题:string原创 2016-05-15 19:13:40 · 376 阅读 · 0 评论 -
LeetCode 121 Best Time to Buy and Sell Stock
题目意思是有一个数组记录了一个股票每天的价格。现在你只可以买卖一次,求最大的收益。其实就是求max(arr[i]-arr[j])(i>=j) AC代码:int maxProfit(vector<int>& prices) { if(prices.empty()) return 0; int min_price = prices[0]; int ans = 0; f原创 2016-05-26 16:16:58 · 209 阅读 · 0 评论 -
LeetCode 141. Linked List Cycle
判断一个单向链表中是否有环。我的方法是让一个指针一次走一步,另一个指针一次走两步。让他们在不为空的情况下一直走。如果有环,这两个指针一定会有重合的时候,如果没环,他们迟早会有一个为空。AC代码:bool hasCycle(ListNode *head) { ListNode *one,*two; one = two = head; while(one != NULL &&原创 2016-05-26 16:27:58 · 290 阅读 · 0 评论 -
LeetCode 119. Pascal's Triangle II
题目很简单,输入一个数字n,返回杨辉三角的第n行。(他这里使用的是0 1 2 3这种计数,就比如他给的例子k=3,返回的是1 3 3 1)解题思路和上一篇博客(LeetCode 118. Pascal’s Triangle http://blog.csdn.net/trident_/article/details/51490228)基本一致,我们知道杨辉三角的第n+1行第m+1列的元素为c(n原创 2016-05-24 15:33:57 · 345 阅读 · 0 评论 -
LeetCode 38. Count and Say
这是我在LeetCode中做到的第一道需要用到递归思想的题目,因为自己对递归掌握的不好,这里做个笔记:题目大意为我们有一个 Count-and-say 的字符串序列,他的第一个元素是‘1’,后一个元素是读前一个而得到的字符串,比如说这里第二个元素就是“11”意思是一个1,那第三个就是“21”,两个1,第四个元素是“1211”,一个2一个1。这就有点类似斐波那契数列的感觉了,所以我们可以想到应该用递归原创 2016-05-12 16:57:24 · 587 阅读 · 0 评论 -
LeetCode 112. Path Sum
写一个布尔函数来判断一棵树有没有一条根到叶子节点的路径上所有节点数值之和是某个数的,有就返回true,没有返回false。 我这里的方法类似于做 LeetCode 111.Minimum Depth of Binary Tree 的方法。(http://blog.csdn.net/trident_/article/details/51483115)。只是把深度换成到该节点的数值原创 2016-05-23 17:57:24 · 284 阅读 · 0 评论