03 2016 档案

摘要:判断链表是否是回文。 我直接将链表的一半进行倒置,然后将两半的链表进行比较 阅读全文
posted @ 2016-03-18 21:53 Breeze0806 阅读(170) 评论(0) 推荐(0) 编辑
摘要:最长公共子串,我使用的方法是枚举 阅读全文
posted @ 2016-03-18 21:43 Breeze0806 阅读(134) 评论(0) 推荐(0) 编辑
摘要:找到所有根到叶子的路径 深度优先搜索(DFS), 即二叉树的先序遍历。 阅读全文
posted @ 2016-03-18 20:30 Breeze0806 阅读(150) 评论(0) 推荐(0) 编辑
摘要:去掉链表中相应的元素值 阅读全文
posted @ 2016-03-17 21:13 Breeze0806 阅读(174) 评论(0) 推荐(0) 编辑
摘要:1 class Solution { 2 public: 3 vector vs_; 4 Solution(){ 5 string t("1"); 6 vs_.push_back(t); 7 for(int i = 1; i< 30;++i){ 8 string t1 = vs_[i - 1... 阅读全文
posted @ 2016-03-17 21:11 Breeze0806 阅读(150) 评论(0) 推荐(0) 编辑
摘要:Leetcode 205 Isomorphic Strings的进阶版 这次是词组字符串和匹配字符串相比较是否一致 请使用map来完成模式统计 阅读全文
posted @ 2016-03-17 21:09 Breeze0806 阅读(137) 评论(0) 推荐(0) 编辑
摘要:判断括号是否合法 1.用stack存入左括号“([{”,遇到相应的右括号“)]}”就退栈 2.判断stack是否为空,可以判断是否合法 阅读全文
posted @ 2016-03-16 20:06 Breeze0806 阅读(159) 评论(0) 推荐(0) 编辑
摘要:A就是统计猜对的同位同字符的个数 B就是统计统计猜对的不同位同字符的个数 非常简单的题 阅读全文
posted @ 2016-03-16 19:54 Breeze0806 阅读(143) 评论(0) 推荐(0) 编辑
摘要:删除从后往前数的第n个节点 我的做法是将两个指针first,second 先将first指向第n-1个,然后让first和second一起指向他们的next,直到first->next->next为空 最后只要删除second->next 阅读全文
posted @ 2016-03-16 19:44 Breeze0806 阅读(121) 评论(0) 推荐(0) 编辑
摘要:找出最后一个词的长度   阅读全文
posted @ 2016-03-13 19:51 Breeze0806 阅读(102) 评论(0) 推荐(0) 编辑
摘要:判断两个字符串是否同构 hs,ht就是每个字符出现的顺序  "egg" 与"add"的数字都是122 "foo"是122, 而"bar"是123   阅读全文
posted @ 2016-03-13 19:33 Breeze0806 阅读(154) 评论(0) 推荐(0) 编辑
摘要:反转二进制   阅读全文
posted @ 2016-03-12 22:43 Breeze0806 阅读(112) 评论(0) 推荐(0) 编辑
摘要:求相交矩形的面积   阅读全文
posted @ 2016-03-12 22:29 Breeze0806 阅读(118) 评论(0) 推荐(0) 编辑
摘要:找出是否存在nums[i]==nums[j],使得 j - i <=k 这是map的一个应用   阅读全文
posted @ 2016-03-12 12:42 Breeze0806 阅读(127) 评论(0) 推荐(0) 编辑
摘要:判断一个数独是否合法,即数独的每一行,每一列的数字不能有重复,每一个3*3的小数独中的数字不能有重复。 1 class Solution { 2 public: 3 bool isValidSudoku(vector<vector<char> > &board) { 4 int rowValid[1 阅读全文
posted @ 2016-03-12 12:30 Breeze0806 阅读(120) 评论(0) 推荐(0) 编辑
摘要:合并有序数组 时间复杂度O(m+n) 该算法来自各种算法与数据结构书,写得已经烂得不能再烂了,这个应该是最短的代码了吧,不知如何归类 1 class Solution { 2 public: 3 void merge(vector<int>& nums1, int m, vector<int>& n 阅读全文
posted @ 2016-03-10 20:29 Breeze0806 阅读(120) 评论(0) 推荐(0) 编辑
摘要:找出链表的交点, 如图所示的c1, 如果没有相交返回null. A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 我的方法是: (1)统计两个链表的长度 (2)移动较长的链表的表头,使得让两个链表的长度一致 (3)从修正后的表头出发对比两个链表的节点是否一致,输 阅读全文
posted @ 2016-03-10 20:23 Breeze0806 阅读(129) 评论(0) 推荐(0) 编辑
摘要:找出最短的从叶子到根的路径长 可以回忆Maximum Depth of Binary Tree的写法,只不过在!root,我把它改成了10000000,还有max函数改成了min函数,最后的值如果是10000000,毫无疑问这棵树肯定为空,因此在最后有(d>=1000000)?0:d; 1 /** 阅读全文
posted @ 2016-03-09 21:58 Breeze0806 阅读(133) 评论(0) 推荐(0) 编辑
摘要:用两个队列去实现栈,这里我使用了队列数组q[2],在所有的过程中保证一个队列是空的 push时插入到空的队列中,然后将队列中的元素移到另一个队列中 pop时从不空的队列中pop() peek时从不空的队列中取出front() 1 class Stack { 2 public: 3 queue<int 阅读全文
posted @ 2016-03-09 21:48 Breeze0806 阅读(166) 评论(0) 推荐(0) 编辑
摘要:判断一个数是否是回文数 方法是将数回转,看回转的数和原数是否相同 1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 if(x < 0) return false; 5 int _x = 0 ; 6 int n = x; 7 for 阅读全文
posted @ 2016-03-07 20:26 Breeze0806 阅读(207) 评论(0) 推荐(0) 编辑
摘要:二叉树的从叶子到根的和是否存在 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : 阅读全文
posted @ 2016-03-07 20:21 Breeze0806 阅读(116) 评论(0) 推荐(0) 编辑
摘要:杨辉三角,这次要输出第rowIndex行 用滚动数组t进行递推 t[(i+1)%2][j] = t[i%2][j] + t[i%2][j - 1]; 1 class Solution { 2 public: 3 vector<int> getRow(int rowIndex) { 4 if(rowI 阅读全文
posted @ 2016-03-07 20:13 Breeze0806 阅读(129) 评论(0) 推荐(0) 编辑
摘要:二叉树的层次遍历 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) 阅读全文
posted @ 2016-03-04 22:33 Breeze0806 阅读(357) 评论(0) 推荐(0) 编辑
摘要:给定一个数n 求出n!的末尾0的个数。 n!的末尾0产生的原因其实是n! = x * 10^m 如果能将n!是2和5相乘,那么只要统计n!约数5的个数. 1 class Solution { 2 public: 3 int trailingZeroes(int n) { 4 int ans = 0; 阅读全文
posted @ 2016-03-04 22:26 Breeze0806 阅读(136) 评论(0) 推荐(0) 编辑
摘要:杨辉三角,即组合数 递推 1 class Solution { 2 vector<vector<int>> v; 3 public: 4 Solution() { 5 for(int i = 0; i < 50; ++i){ 6 vector<int> t(i+1,1); 7 for(int j = 阅读全文
posted @ 2016-03-03 20:49 Breeze0806 阅读(126) 评论(0) 推荐(0) 编辑
摘要:题意让大数加1 我的做法是先让个位+1,再倒置digits,然后进位,最后倒置digits,得到答案。 1 class Solution { 2 public: 3 vector<int> plusOne(vector<int> &digits) { 4 digits[digits.size() - 阅读全文
posted @ 2016-03-02 21:55 Breeze0806 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目本身是去重 由于我很懒,所以用了STL库里的unique函数来去重,小伙伴们可以考虑自己实现去重的函数,其实并不复杂。 1 class Solution { 2 public: 3 int removeDuplicates(vector<int>& nums) { 4 return unique 阅读全文
posted @ 2016-03-02 21:27 Breeze0806 阅读(146) 评论(0) 推荐(0) 编辑
摘要:和remove zero类似的方法完成该题 1 class Solution { 2 public: 3 int removeElement(vector<int>& nums, int val) { 4 vector<int>::size_type j = 0; 5 for(vector<int> 阅读全文
posted @ 2016-03-02 21:19 Breeze0806 阅读(120) 评论(0) 推荐(0) 编辑
摘要:1.Shell脚本是解释型的语言。 2.Shell脚本建立的基本步骤: 3.Shell脚本文件的第一行一般可以是:"#! 路径名 -(选项)", 为了要使Shell脚本有移植性,请满足下列要求: 1)Length(第一行)<64 2)路径名要完整 3)选项不要有空格 4.Shell脚本的命令类型:内 阅读全文
posted @ 2016-03-02 11:12 Breeze0806 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题意是倒过来层次遍历二叉树 下面我介绍下BFS的基本框架,所有的BFS都是这样写的 struct Nodetype { int d;//层数即遍历深度 KeyType m;//相应的节点值 } queue<Nodetype> q; q.push(firstnode); while(!q.empty( 阅读全文
posted @ 2016-03-01 20:23 Breeze0806 阅读(209) 评论(0) 推荐(0) 编辑
摘要:判断一棵树是否自对称 可以回忆我们做过的Leetcode 100 Same Tree 二叉树和Leetcode 226 Invert Binary Tree 二叉树 先可以将左子树进行Invert Binary Tree,然后用Same Tree比较左右子树 而我的做法是改下Same Tree的函数 阅读全文
posted @ 2016-03-01 20:01 Breeze0806 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题意是强盗能隔个马抢马,看如何获得的价值最高 动态规划题需要考虑状态,阶段,还有状态转移,这个可以参考《动态规划经典教程》,网上有的下的,里面有大量的经典题目讲解 dp[i]表示到第i匹马时的最大价值是多少, 因此所有的dp[i] = max(dp[i-2]+nums[i],dp[i-1]) (其中 阅读全文
posted @ 2016-03-01 19:55 Breeze0806 阅读(350) 评论(0) 推荐(0) 编辑
摘要:判断一棵树是否是平衡树,即左右子树的深度相差不超过1. 我们可以回顾下depth函数其实是Leetcode 104 Maximum Depth of Binary Tree 二叉树 1 /** 2 * Definition for a binary tree node. 3 * struct Tre 阅读全文
posted @ 2016-03-01 19:10 Breeze0806 阅读(130) 评论(0) 推荐(0) 编辑
摘要:本题用两个栈实现队列,用栈的基本操作去实现队列的所有基本操作push(),pop(),peek()以及empty() sa作为输入栈,sb作为输出栈,将sa输入元素的反转过来放到sb中 push与sa有关,而pop(),peek()与sb有关,即将sa输入元素出栈放到sb中(函数move). 为此, 阅读全文
posted @ 2016-03-01 19:04 Breeze0806 阅读(169) 评论(0) 推荐(0) 编辑
摘要:合并两个已排序的链表,考到烂得不能再烂的经典题,但是很多人写这段代码会有这样或那样的问题 这里我给出了我的C++算法实现 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListN 阅读全文
posted @ 2016-03-01 16:36 Breeze0806 阅读(159) 评论(0) 推荐(0) 编辑
摘要:同样是判断数是否是2的n次幂,同 Power of three 1 class Solution { 2 public: 3 bool isPowerOfTwo(int n) { 4 return (n > 0) && (((long long)1<<31) % n == 0); 5 } 6 }; 阅读全文
posted @ 2016-03-01 16:24 Breeze0806 阅读(153) 评论(0) 推荐(0) 编辑
摘要:判断一个数是否是3的n次幂 这里我用了一点巧,所有的int范围的3的n次幂是int范围最大的3的n次幂数(即3^((int)log3(MAXINT)) = 1162261467)的约数 这种方法是我目前觉得是最好的,不容易出错,其他的方法因为精度问题而很容易错。 1 class Solution { 阅读全文
posted @ 2016-03-01 16:21 Breeze0806 阅读(729) 评论(0) 推荐(0) 编辑
摘要:Ugly Number的质因数仅为2,3,5 将输入的数分别除以2,3,5直到不能除,看是否为1,为1的是Ugly Number,其他则不是。 1 class Solution { 2 public: 3 bool isUgly(int num) { 4 if(num<=0) return fals 阅读全文
posted @ 2016-03-01 16:12 Breeze0806 阅读(771) 评论(0) 推荐(0) 编辑