01 2016 档案

摘要:将单向链表反转完成如图操作,依次进行即可123 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListN... 阅读全文
posted @ 2016-01-25 22:40 Breeze0806 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题意:将罗马数字1到3999转化成自然数字,这里用了STL库map将罗马字符映射到自然数字。I,V,X,L,C,D,M -> 1,5,10,50,100,500,1000m[s[i]] m; 4 Solution(){ 5 const int N = 7; 6 ... 阅读全文
posted @ 2016-01-25 22:17 Breeze0806 阅读(163) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如, _______6______ / \ ___2__ ___8__ / \ / \ 0 4 7 9 / \ 3 52和8的最近公共祖先是6,2和4的最近公共祖先是2,假设找的3和5 TreeNode* l =lowestCommonAnces 阅读全文
posted @ 2016-01-24 23:13 Breeze0806 阅读(227) 评论(0) 推荐(0) 编辑
摘要:对于N-Queens的每种情况,回答出每种情况的N-Queens的排列数。 l,r和c是每种类型的格子是否有棋子。 l判断的是这样的对角线的格子 r判断的是这样的对角线的格子 c 判断的是这样的竖线格子 枚举每行放一颗棋子,判断是否与前面冲突,如果不冲突一直到底就让答案+1 这种搜索也可以参考DFS 阅读全文
posted @ 2016-01-24 22:42 Breeze0806 阅读(450) 评论(0) 推荐(0) 编辑
摘要:二叉树的中序遍历,即左子树,根, 右子树 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int 阅读全文
posted @ 2016-01-24 21:36 Breeze0806 阅读(137) 评论(0) 推荐(0) 编辑
摘要:二叉树的基础操作:二叉树的先序遍历(详细请看数据结构和算法,任意本书都有介绍),即根,左子树,右子树,实现方法中还有用栈实现的,这里不介绍了 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; ... 阅读全文
posted @ 2016-01-24 21:33 Breeze0806 阅读(161) 评论(0) 推荐(0) 编辑
摘要:统计一个值的二进制1的个数,用与(&)和向左移位(>1){ 6 ans += n&1; 7 } 8 return ans; 9 }10 };解法二: 1 class Solution { 2 public: 3 int hamm... 阅读全文
posted @ 2016-01-24 21:25 Breeze0806 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题意:先将0, 1, 2, ..., n放入数组,然后去掉其中一个值,找到那个值。这题与singe number 是一个类型,变形的地方就是首先需要将0, 1, 2, ..., n再次放入这个数组,这样就和singe number 一样。 1 class Solution { 2 public: 3... 阅读全文
posted @ 2016-01-24 21:02 Breeze0806 阅读(190) 评论(0) 推荐(0) 编辑
摘要:先介绍下本题的题意:在一个字符串组成的数组words中,找出max{Length(words[i]) * Length(words[j])},其中words[i]和words[j]中没有相同的字母,在这里字符串由小写字母a-z组成的。对于这道题目我们统计下words[i]的小写字母a-z是否存在,然... 阅读全文
posted @ 2016-01-24 20:49 Breeze0806 阅读(373) 评论(0) 推荐(1) 编辑
摘要:字符串s和字符串t是否异构,就是统计两个字符串的a-z的字符数量是否一值 1 class Solution { 2 public: 3 4 bool isAnagram(string s, string t) { 5 int flgs[26] = {0};//统计s a-z... 阅读全文
posted @ 2016-01-17 21:57 Breeze0806 阅读(167) 评论(0) 推荐(0) 编辑
摘要:在一个长度为n的数组中找出出现次数超过(n+1)/2次的数 说明请参考编程之美中的2.3 class Solution { public: int majorityElement(vector<int>& nums) { int candidate; int ntimes,i; for(ntimes 阅读全文
posted @ 2016-01-16 21:05 Breeze0806 阅读(335) 评论(0) 推荐(0) 编辑
摘要:有n盏关着的灯,第k轮把序号为k倍数的关着的灯打开,开着的灯关闭。class Solution {public: int bulbSwitch(int n) { return (int)sqrt(n*1.0); }}; 阅读全文
posted @ 2016-01-16 20:59 Breeze0806 阅读(205) 评论(2) 推荐(0) 编辑
摘要:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。交易次数不限,但一次只能交易一支股票,也就是说手上最多只能持有一支股票,求最大收益。 关键:能赚就赚 1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) 阅读全文
posted @ 2016-01-16 20:35 Breeze0806 阅读(126) 评论(0) 推荐(0) 编辑
摘要:找出数组中重复的数,裸的map和set题 1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { 4 map<int,int> mii; 5 for (int i = 0;i<nums.size() ;++ 阅读全文
posted @ 2016-01-16 20:23 Breeze0806 阅读(140) 评论(0) 推荐(0) 编辑
摘要:本质是把26进制转化为10进制 A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 1 class Solution { 2 public: 3 int titleToNumber(string s... 阅读全文
posted @ 2016-01-16 20:13 Breeze0806 阅读(149) 评论(0) 推荐(0) 编辑
摘要:计算二叉树的最大深度 我的方法是找出两个子树的长度中最长的那个,然后加1 1 class Solution { 2 public: 3 int maxDepth(TreeNode* root) { 4 if(!root) return 0; 5 else return max(maxDepth(ro 阅读全文
posted @ 2016-01-16 20:07 Breeze0806 阅读(116) 评论(0) 推荐(0) 编辑
摘要:在一个数组中找出两个不同的仅出现一次的数(其他数字出现两次)同样用亦或来解决(参考编程之美的1.5)先去取出总亦或值然后分类,在最后一位出现1的数位上分类成 ans[0]和ans[1]a&(-a)就是计算出这个数,可以参考树状数组。最后就是注意(nums[i] & a) == 0要加()。注意符号运... 阅读全文
posted @ 2016-01-16 20:02 Breeze0806 阅读(158) 评论(0) 推荐(0) 编辑
摘要:就是判断两棵树的值和结构是否相同注意:要判断是否所有的树节点是否为NULL 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; ... 阅读全文
posted @ 2016-01-16 18:51 Breeze0806 阅读(146) 评论(0) 推荐(0) 编辑
摘要:给出一个数组 nums[i](i = 0,1,...,n-1) 输出数组output[i]满足output[i] =nums[0] * num[1] * num[2] *..*num[i-1] * num[i+1]*... *num[n-1]要求不能使用除了output之外的大内存,满足时间复杂度O... 阅读全文
posted @ 2016-01-16 18:32 Breeze0806 阅读(499) 评论(0) 推荐(0) 编辑
摘要:将链表节点序号(不是值)是偶数的放到链表后面, 如Given1->2->3->4->5->NULL,return1->3->5->2->4->NULL.我首先统计了下链表的大小cnt,同时求出链表尾端end,然后直接将每个链表节点序号是奇数的点后面的节点放到end后面去,同时更新end,这样更新cn... 阅读全文
posted @ 2016-01-16 17:33 Breeze0806 阅读(987) 评论(0) 推荐(0) 编辑
摘要:交换左右叶子节点 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 ... 阅读全文
posted @ 2016-01-15 13:01 Breeze0806 阅读(198) 评论(0) 推荐(0) 编辑
摘要:如题 删除是要注意让现在的链表等于下一个链表的值1 class Solution {2 public:3 void deleteNode(ListNode* node) {4 ListNode *nextnode = node ->next;5 *node =... 阅读全文
posted @ 2016-01-15 12:48 Breeze0806 阅读(108) 评论(0) 推荐(0) 编辑
摘要:题意就是从一堆数中找出唯一的一个只存在一个的数。除了那个数,其他的数都是两个相同的数。通过亦或的性质:1)a^a = 0 0^a = a2)交换律 a^b = b^ a3)结合律 (a^b)^c=a^(b^c)这样很容易证明将所有的数亦或就能得到唯一的一个只存在一个的数。 1 class Solut... 阅读全文
posted @ 2016-01-15 12:39 Breeze0806 阅读(169) 评论(0) 推荐(0) 编辑
摘要:1 class Solution {2 public:3 int addDigits(int num) {4 if(num == 0 ) return num;5 else return num % 9 == 0 ? 9 : num % 9;6 }7 ... 阅读全文
posted @ 2016-01-15 12:33 Breeze0806 阅读(172) 评论(1) 推荐(1) 编辑
摘要:class Solution {public: bool canWinNim(int n) { return n % 4 != 0; }}; 阅读全文
posted @ 2016-01-15 12:31 Breeze0806 阅读(218) 评论(1) 推荐(1) 编辑
摘要:1 class Solution { 2 public: 3 void moveZeroes(vector& nums) { 4 int j = 0; 5 for(int i = 0; i< nums.size(); ++i){ 6 ... 阅读全文
posted @ 2016-01-15 11:58 Breeze0806 阅读(204) 评论(2) 推荐(1) 编辑
摘要:统计联通区域块的个数,简单dfs,请可以参考DFS框架:Leetcode 130 Surrounded Regions DFS class Solution { public: int m, n; bool is_in(int x, int y) { return (x < m ) && (x >= 阅读全文
posted @ 2016-01-15 11:19 Breeze0806 阅读(301) 评论(0) 推荐(0) 编辑
摘要:将内部的O点变成X input X X X XX O O X X X O XX O X X output X X X XX X X XX X X XX O X X DFS的基本框架是 1 void dfs(int now,int d){ 2 if(终止条件) { 3 做相应的操作; 4 return 阅读全文
posted @ 2016-01-15 10:56 Breeze0806 阅读(249) 评论(0) 推荐(0) 编辑
摘要:此题主要是讲给你一组数,如何将数连在一起能得到最大值(最小值反之),注意局部最优,就是说如果 123 234两个连在一起怎么样最大,显然是234123比123234大,对于3个数我们可以找到类似的性质,4个数一样。。。因此我们得到这个局部最优的排序是全局最优的。因此这个实现最核心的代码就是函数cmp 阅读全文
posted @ 2016-01-14 17:05 Breeze0806 阅读(579) 评论(0) 推荐(0) 编辑
摘要:分数转小数,要求输出循环小数 如2 3 输出0.(6) 弗洛伊德判环的原理是在一个圈里,如果一个人的速度是另一个人的两倍,那个人就能追上另一个人。代码中one就是速度1的人,而two就是速度为2的人。 Fraction to Recurring Decimal可以使用弗洛伊德判环,不同的是要找到循环 阅读全文
posted @ 2016-01-13 10:45 Breeze0806 阅读(310) 评论(0) 推荐(0) 编辑
摘要:今天先谈下弗洛伊德判环,弗洛伊德判环原来是在一个圈内有两人跑步,同时起跑,一人的速度是另一人的两倍,则那个人能在下一圈追上另一个人,弗洛伊德判环能解数字会循环出现的题,比如说判断一个链表是不是循环链表。在程序中具体表现为 one = change(one); //一倍速度 two = change( 阅读全文
posted @ 2016-01-12 16:47 Breeze0806 阅读(632) 评论(0) 推荐(0) 编辑
摘要:系统是Win7 虚拟机是CenterOS6.5 1.关闭防火墙以及关闭SELINUX的强制模式(重要): service iptables stop//关闭防火墙 setenforce 0 //关闭SELINUX的强制模式 2.安装Samba: yum install samba samba-cli 阅读全文
posted @ 2016-01-12 16:16 Breeze0806 阅读(789) 评论(0) 推荐(0) 编辑
摘要:请使用root权限用控制台安装gcc5.1.0(重要)1.首先把旧的gcc相关的编译工具安装好(没有安装会导致后面的错误)yum upgrade gcc //升级gcc库yum -y install gcc-c++// 安装g++库2.下载gcc5.1.0wget ftp://mirrors.ker... 阅读全文
posted @ 2016-01-12 16:11 Breeze0806 阅读(986) 评论(0) 推荐(0) 编辑