
【考研机试准备与OJ总结】
文章平均质量分 60
wangxiaobupt
这个作者很懒,什么都没留下…
展开
-
LeetCode 118 Pascal's Triangle
题目分析可以通过树形递归的方式获取指定坐标(i,j)的值。递归的方式如下:如果 j为0,说明是第一个返回1。如果j == i说明是最后一个,返回1否则返回上层的两个数相加。之后for循环,从(1,1)遍历到(n,n)即可题解class Solution {public:原创 2015-07-18 10:34:22 · 576 阅读 · 0 评论 -
LeeCode 142 Linked List Cycle II
题目分析用multimap的键存已遍历过的结点指针,当某个键存入的次数不为0时,说明已经进入循环,此时的结点为循环的起始结点。题解/** * Definition for singly-linked list. * struct ListNod原创 2015-05-22 19:08:19 · 660 阅读 · 0 评论 -
LeetCode 219 Contains Duplicate II
题目分析用map存储,查找即可。题解class Solution {public: bool containsNearbyDuplicate(vector& nums, int k) { map mymap; for(int i=0;i<nums.size();原创 2015-06-23 16:09:11 · 549 阅读 · 0 评论 -
LeeCode 94 Binary Tree Inorder Traversal
题目分析二叉树的中序遍历,用递归即可过。题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode原创 2015-05-18 20:20:35 · 591 阅读 · 0 评论 -
LeetCode 144 Binary Tree Preorder Traversal
题目分析二叉树的先序遍历,用简单的递归即可过。题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef原创 2015-05-18 20:13:25 · 594 阅读 · 0 评论 -
LeeCode 137 Single Number II
题目分析可以先排序 再用数学方法找到单独的数( 如果有3个一样的数,那么 arr[0] == arr [2] )题解class Solution {public: int singleNumber(vect原创 2015-05-18 21:09:41 · 585 阅读 · 0 评论 -
LeetCode 217 Contains Duplicate
题目分析用map遍历一遍判断有无重复即可。题解class Solution {public: bool containsDuplicate(vector& nums) { int SIZE = nums.size(); if(SIZE =原创 2015-06-19 15:41:51 · 543 阅读 · 0 评论 -
LeetCode 112 Path Sum
题目题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v原创 2015-06-21 23:08:36 · 567 阅读 · 0 评论 -
LeetCode 110 Balanced Binary Tree
题目题解非递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(i原创 2015-06-21 10:45:57 · 555 阅读 · 0 评论 -
LeetCode 129 Sum Root to Leaf Numbers
题目题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v原创 2015-06-16 22:47:03 · 568 阅读 · 0 评论 -
LeetCode 111 Minimum Depth of Binary Tree
题目分析递归可求出最小深度,要考虑左子树或右子树为空的情景。题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tre原创 2015-06-16 19:54:48 · 564 阅读 · 0 评论 -
LeetCode 5 Longest Palindromic Substring
题目分析题目的要求是求出最大的回文子串,那么可以通过枚举回文子串中间的值 i ,不断往两边扩散。遍历 i 即可 。要注意的是 回文串的大小是奇数还是偶数 情况是不一样的。 如: abcba abccba 于是枚举 i 时,既要枚举奇数情况求出最大子串 也要枚举偶原创 2015-05-05 10:29:20 · 581 阅读 · 0 评论 -
LeetCode 35 Search Insert Position
题目分析跟插入排序有点像不过区别就是: 如果主键一样的情况下,也会往前插入。第一个例子中的5可以插到下标为3个地方,结果需要插到下标为2的地方。那么从后往前遍历找到比需要插的值小的地方即可。题解class S原创 2015-04-27 15:35:07 · 638 阅读 · 0 评论 -
LeetCode 21 Merge Two Sorted Lists
题目分析归并的时候一定要注意一边已经被归并完了的情况。题解class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2原创 2015-04-27 14:45:24 · 568 阅读 · 0 评论 -
LeetCode 193 Valid Phone Numbers
题目分析1.定死开头和结尾开头:要么是三个数字一个'-' 或者(三个数字)+ 一个空格 中间: 三个数字 + 一个‘-’结尾: 四个数字题解awk '/^([0-9]{3}-|原创 2015-04-26 21:55:31 · 1760 阅读 · 0 评论 -
LeetCode 101 Symmetric Tree
题目题解非递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) :原创 2015-06-23 21:03:12 · 515 阅读 · 0 评论 -
LeeCode 148 Sort List
题目分析全部取出来放入vector中进行排序再构造一条新链表题解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *原创 2015-05-19 11:06:19 · 707 阅读 · 0 评论 -
LeetCode 231 Power of Two
题目分析题目要求为判断一个数是否为2的幂。一种基本的方法就是不断的对2取余直到该数变为1,如果所有的取余结果都为0,则为2的幂。比较简单的方法:2的幂用2进制表示只有一个1,比如16= 2^4 用2进制表示则为 10000,那么它减一则为 01111这两个数取按位与操作一定为0题解解原创 2015-07-18 23:06:28 · 591 阅读 · 0 评论 -
LeetCode 237 Delete Node in a Linked List
题目分析题目的意思很简单,给你一个链表,给你一个节点(不是尾结点)让你反悔除了这个节点之外的链表。题解起初我是这样想的,把下一个的值赋给当前的值,不断移动当前的位置,那么最后一个值就是不需要的。那么倒数第二个节点 node -> next = NULL; 即可/** * Definit原创 2015-07-18 22:31:47 · 611 阅读 · 0 评论 -
LeetCode 116 Populating Next Right Pointers in Each Node
题目分析可以通过层序遍历,将一层的节点放入容器中,前一个节点指向后一个,最后一个节点指向NULL。题解/** * Definition for binary tree with next pointer. * struct TreeLinkNode { *原创 2015-06-15 21:05:20 · 627 阅读 · 0 评论 -
LeetCode 102 Binary Tree Level Order Traversal
题目题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v原创 2015-06-13 13:06:30 · 565 阅读 · 0 评论 -
LeetCode 107 Binary Tree Level Order Traversal II
题目分析同题102 Leetcode 102 层序遍历到底只是vector插入的顺序不同题解/** * Definition for a binary tree node. * struct TreeNode { * int v原创 2015-06-13 14:35:25 · 633 阅读 · 0 评论 -
LeetCode 145 Binary Tree Postorder Traversal
题目递归分析如果用递归的方法则要解决这么两个问题:1.如果 f(root)可以得到整个树的后序遍历,那么f(root-left)就能得到左子树的后序,那么也可以得到右子树的后序左子树的后序 + 右子树的后序 + 根结点即可得到结果。2. 不可能一直向下递归下去,终止条件:当遍历到原创 2015-06-13 14:26:54 · 614 阅读 · 0 评论 -
LeetCode 226 Invert Binary Tree
题目分析用递归很容易解决。题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode原创 2015-06-12 19:18:16 · 983 阅读 · 0 评论 -
LeetCode 1 Two Sum
题目分析看完题目首先可以考虑直接暴力破解,不过O(n*2)的时间复杂度会超时,需要降低时间复杂度。1.先进行一个快排,两个指针分别指向首(i)尾(j),若和大于要求值则 j--,否则i++2.先进行一个快排,再在数组中通过二分查找另一个数。题解1.vo原创 2015-04-11 21:59:55 · 706 阅读 · 0 评论 -
LeeCode 206 Reverse Linked List
题目分析全部存入栈里再构造一条新链表。题解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2015-05-19 10:43:20 · 559 阅读 · 0 评论 -
LeeCode 19 Remove Nth Node From End of List
题目分析删除从后往前数第N个元素可以转化成从前往后数第SUM - N + 1个元素其次,删除的元素分三种情况,1.如果是第一个元素(头结点)直接返回头结点的下一节点的指针即可2.如果是最后一个元素,则把倒数第二个元素的Next赋值为空即可3.如果是中间某个元素,那么让这个元素的前一个元素指向其后原创 2015-05-19 12:18:03 · 722 阅读 · 0 评论 -
LeetCode 7 Reverse Integer
题目题解class Solution {public: int reverse(int x) { long result = 0; while(x != 0) { result = result*10 + x % 10; x /=原创 2015-06-24 15:32:35 · 534 阅读 · 0 评论 -
LeeCode 61 Rotate List
题目分析如果k= 0 或 k为结点数的整数倍,链表无变化 可以直接返回头结点。否则先用 K 对 NUM 取余,获得旋转次数,将后K个先打出,在将前 NUM - K个打出 构造新链表题解/** * Definit原创 2015-05-19 15:55:32 · 648 阅读 · 0 评论 -
LeeCode 82 Remove Duplicates from Sorted List II
题目分析题意为一旦有重复出现,该元素要全部删除。并且这已经是个sorted linked list 。因此定义一个NUM用来统计每个元素重复的次数,当重复为0时将该节点加入新构造的链表中,如果重复不为0则从下一节点继续知道遍历完整个链表。题解原创 2015-05-19 12:52:51 · 744 阅读 · 0 评论 -
LeetCode 168 Excel Sheet Column Title
题目题解class Solution {public: string convertToTitle(int n) { return (n>26 ? convertToTitle((n-1)/26) : "") + (char)((n-1) % 26 + 'A'); }};原创 2015-06-24 16:32:19 · 628 阅读 · 0 评论 -
LeetCode 136 Single Number
题目分析这是leetcode中通过率目前最高的一道题,只是按照最基本的方法一遍AC了。题解class Solution {public: int singleNumber(int A[], int n) { sort(A,A+n)原创 2015-04-21 23:17:14 · 666 阅读 · 0 评论 -
LeetCode 83 Remove Duplicates from Sorted List
题目分析做了不少递归的题了,经验就是一定要把当前节点的所有情况考虑清楚然后递归到下一个节点。每个节点完成它所需要完成的任务后返回。根据函数要求的返回值确定递归结束后需要返回什么。题解class Solution {原创 2015-04-21 19:02:52 · 857 阅读 · 1 评论 -
LeetCode 66 Plus One
题目分析从低位开始,如果不进位则加1直接返回即可。如果有进位则循环移动到高位加进位判断高位是否也需要进位,以此类推,如果最高位也要进位则需要开辟一个新数组(最高位为1,其余为0)。题解class Solution {public: vector pl原创 2015-04-19 20:38:12 · 573 阅读 · 0 评论 -
LeetCode 100 Same Tree
题目分析树的题一般用递归就可以解决,每次写递归函数的时候都不知道写的全不全,结果每次都是一遍就能过= =判断两棵树是否一样在判断的时候只要发现一处不一样,结果就是不一样。如果全部一样才一样。经验就是一定要把根节点的情况分析清楚,可能存在可能不存在,也可能一个存在一个不存在,当两个根节点都存在的情况下数原创 2015-04-19 21:09:02 · 517 阅读 · 0 评论 -
LeetCode 192 Word Frequency
题目分析1.利用awk默认一行一条记录,默认以空格划分每条记录,NF为划分的总块数先打印出所有单词。2.排序+统计+消除重复3.输出题解awk '{i=1;while(i<=NF){print $i;原创 2015-04-22 22:14:39 · 2275 阅读 · 0 评论 -
LeetCode 26 Remove Duplicates from Sorted Array
题目分析统计删除重复后数组的长度比较简单,复杂的是如何很有效率的得到新数组。统计每个数字重复的个数,再将后面的数组整体向前移动几位也可以,不过可能太费时了。我采用的办法就是将重复的数字重新赋予一个很大的值,最后进行一个排序,那些没用的重复数据就到最后去了。原创 2015-04-22 21:46:25 · 559 阅读 · 0 评论 -
LeetCode 70 Climbing Stairs
题目分析典型的斐波那契数列,f(n)=f(n-1)+f(n-2)可以用递归来做,不过递归比较慢要进行2^n次加法,最后申请了一个数组做循环加法。题解int climbStairs(int n) { int *ar原创 2015-04-22 19:42:10 · 700 阅读 · 0 评论 -
LeetCode 195 Tenth Line
题目分析这道题好逗。题解sed -n '10p' file.txt原创 2015-04-22 22:50:24 · 1182 阅读 · 0 评论 -
LeetCode 27 Remove Element
题目分析最简单的办法,虽然说效率可能比较低。。先排序统计个数count,把特定的数后面的数都向前移动count位即可。题解class Solution {public: int removeEl原创 2015-04-22 21:05:52 · 538 阅读 · 0 评论