自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mac安装thrift.0.10.0

说明:(1)mac现在默认安装版本为11,因项目需要安装10版本,对版本要求不是强依赖的请绕道。(2)试了很多方法,都失败了,最终找到一个方法尝试可行性很高,原地址:https://www.jianshu.com/p/aadb54eac0a8(3)按照上述方法执行即可,中间会出现的问题下面是解决方法。(4)不要问我为什么,我特么也不知道为什么,我弄了两天多,心情很复杂!1 Calling 'dep...

2018-06-29 17:53:08 1872

原创 大整数加减

class LargeInt{public: LargeInt(unsigned value = 0, bool sign = true); LargeInt(const char *value = "", bool sign = true); ~LargeInt();public: LargeInt(const LargeInt &biginteger);public:

2016-08-02 22:17:53 322

转载 二叉树的最大子树和

原文出处:http://blog.csdn.net/brucehb/article/details/12322927给一个二叉树,每个节点都是正或负整数,求该二叉树的最大子树和?struct TreeNode { int val; TreeNode *left; TreeNode *right; }; int vis

2016-07-26 16:53:24 1869 1

原创 C++ int与string的转化

使用stringstream1 int aa = 30;2 stringstream ss;3 ssaa; 4 string s1 = ss.str();5 cout// 306 7 string s2;8 ss>>s2;9 cout// 30

2016-07-20 20:46:14 259

原创 确定一个字符串的所有字符是否全都不同

题目:给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。思路:用一个int做位运算,一个int4个字节32位,一共26个字母绰绰有余。代码:#include #include #include using names

2016-07-19 20:57:52 1058

原创 汉若塔问题

问题:将求解汉若塔的每步移动输出。思路:将问题归纳为只有两层时的通用情况,当只有两层时,第一步先将第一层移动到中间,第二部将第二层移动到右边,第三步将第一层从中间移动到右边。再将问题细分为求解第一层。代码:#include using namespace std;int steps;void dfs(int n, string l, string m, string r)

2016-07-14 16:17:17 421

原创 寻找第一个重复的字符

#include #include #include using namespace std;int main(int argc, char const *argv[]){string str;cin >> str;set str_set;int len = str.size(), oldsize = str_set.size();for(i

2016-06-20 21:14:26 705

原创 STL-power算法实现

晚上重新看《STL源码剖析》,看到power的实现时觉得很有意思,遂想记录一下。一般情况下,在计算power时都会有个初值,通常为1,但泛型算法的值并不一定是POD类型,最常见的是class和struct类型,在处理这一类型时初值则不能为1。STL中有个很巧妙的处理技巧,规避了这类问题。下面来看代码:template T power(T x, Integer n, MonoidO

2016-06-18 19:47:09 541

原创 扑克牌游戏

题目描述:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):) 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker J

2016-06-18 16:22:25 931

原创 风口的猪-中国牛市

题目描述:风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数

2016-06-16 09:04:54 1868

原创 二叉树中序遍历的下一个节点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:1.如果一个节点有右子树,那么中序遍历的下个节点就是它的右子树中最左子结点。   2.如果一个节点没有右子树,且它是它父节点的左子结点,那么中序遍历的下个节点就是它的父节点。   3.如果一个节点没有右子树,且它是父节点的右子结点,则

2016-06-06 14:17:20 1007

原创 删除链表中重复的节点

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。思路:本题的难点在于头节点的处理和重复2次以上节点的处理,采用递归的方法,一次删除重复节点。代码:ListNode* deleteDuplication(ListNode* pHead) {

2016-06-05 21:19:50 257

原创 正则表达式匹配

问题:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路:先来分析如何匹配一个字符,如果模式中的字符是'.',那么它可以匹配字符串中的任意字符。

2016-06-03 10:51:44 386

原创 最小的k个数

题目:输入n个整数,找出其中最小的k个数。例如输入4,5,1,6,2,7,3,8.则最小的4个数字是1、2、 3、 4.思路:这道题有很多解法,最简单的思路为将n个数排序,然后输出排序后的k个数。还有就是利用堆的特点来解决,但都是排序的一种变体,时间复杂度为O(nlogn).这里我们用另外一种解法-分治法,基于快速排序的partition函数得来,如果基于数组的第k个数字来调整,使得比第k个数

2016-05-30 19:07:25 296

原创 二叉搜索树的后续遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。思路:在后序遍历得到的序列中,最后一个数字是输的根节点的值。数组前面的数字可以分为两部分:第一部分是左子树节点的值,它们都比根节点的值小;第二部分是右子树节点的值,它们都比根节点的值大。如此就可以判断数组每一部分对应的子树的结构。代码:#include #in

2016-05-28 14:38:56 264

原创 剑指offer-----栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。思路:解决这个问题很直观地想法就是建立一个辅助栈,把输入的第一个序列中的数字以此压入该辅助栈,并按照第二个序列的顺序依

2016-05-27 18:52:52 275

原创 牛客网----反转链表

题目描述:输入一个链表,反转链表后,输出链表的所有元素。示例:输入:1,2,3,4,5,6   输出:6,5,4,3,2,1代码:ListNode* ReverseList(ListNode* pHead){ if(pHead == NULL){ return pHead; } else{ ListNode *pre = pHead, *p = pHead->

2016-05-26 19:41:24 783

原创 编程珠玑----快速排序的变形

废话少说,直接进入正题。一般课本上关于快速排序给出的程序代码形式为int quicksort(vector &v, int left, int right){ if(left < right){ int key = v[left]; int low = left; int hig

2016-05-26 10:02:17 339

原创 编程珠玑---内循环优化

在《编程珠玑》第9章 代码调优一节有个小tips作者讲到顺序搜索中的循环优化调优问题,源代码如下:int search(){ for(int i=0;i<n;i++){ if(x[i]==t) return i; return -1; }}该循环其实已经很简洁了,但还可以再进行少许的精简。内循环中有两种测试:第一种测试检验i是否已到达数组末尾,第二种测试检验x[i

2016-05-25 10:44:13 295

原创 数值的整数次方

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,不考虑大数问题。注意点:本题需要避免惯性思维,将exponent默认为正数,所以需要将exponent等于0 和 负数的情况考虑进去。思路:正数和0时程序好处理,当指数为负数的时候,可以先对指数求绝对值,然后算出次方的结果之后再取倒数。

2016-05-24 21:36:34 239

原创 剑指offer----面试题11:数值的整数次方

题目:求一个数a的n次方。注意点:(1)0的0次方数学上没有意义。(2)考虑边界值处理。解法:假如要求一个数的32次方,如果我们已经知道了它的16次方,那么只要在16次方的基础上再平方一次就可以了,以此类推。程序中可以通过移位操作来实现。   (a^n/2)*(a^n/2)    n为偶数。a^n=    (a^n-1/2)*(a^n-/2)*aa为奇数。

2016-04-26 17:23:56 330

原创 剑指offer------写程序时需要考虑的小tips

今天看剑指offer第三章时开头提到了面试官在面试中看重应聘着所写程序的几点,其中就有关于写程序时应该列入考虑范围的一些东西。 1、正常的输入处理。 2、边界值的处理。 3、错误的输入处理。 示例:编写一个将字符串转化成整数的程序。 代码: #include #include using namespace std; bool stringToint(const char

2016-04-25 15:18:37 340

原创 Muduo Buffer和Google protobuf

Muduo Buffer 实现思路首先用作者给出的图说明:可以看到有两个下标rederIndex 和 writerIndex 来控制buffer的读取和写入。 +-------------------+------------------+------------------+ | prependable bytes | readable bytes | wri

2016-04-17 09:03:45 565

原创 动态划归:最长公共子串和最长公共子序列--LCS

一、最长公共子序列--LSC(Longest Common Subsequence)    (1)概念:一个字符串的子序列是指从该字符串中去掉任意多个字符后剩下的字符在不改变顺序的情况下组成的新字符串。例如cnblogs和belong的公共子序列为blog,仔细想想我们可以发现其实最长公共子序列的个数不是唯一的,有可能会有两个以上,但长度一定是唯一的。    (2)解决

2016-04-14 10:38:56 387

原创 微软2016校园招聘4月在线笔试2-403 Forbidden

描述Little Hi runs a web server. Sometimes he has to deny access from a certain set of malicious IP addresses while his friends are still allow to access his server. To do this he writes N rules in th

2016-04-13 09:41:33 383

原创 编程之美 1.16 24点游戏

24点游戏:给玩家4张牌,面值在1~13之间,允许其中有数值相同牌。采用加、减、乘、除四则运算,允许有小数可以使用括号,使其运算结果为24。解:(1)穷举法          假设给定的4个数组成的集合为A={1,2,3,4},定义函数f(A)为对集合A中的元素进行所有可能的四则混合运算所得到的值。          首先从A中任意取两个数,对取出来的数分别进行不同的四则运算,

2016-04-12 15:30:02 726 1

原创 关于分层遍历二叉树

问题:给定一棵二叉树,要求按分层遍历二叉树,即从上到下按层次访问该二叉树,每一层要求访问顺序为从左到右。解:首先从根节点出发,依次将每层的节点从左到右压入一个数组,并用一个游标cur记录当前访问的节点,另一个游标Lost指示当前层次的最后一个节点的下一个位置,以cur==last作为当前层次访问的结束条件,在访问某一层的同时将该层的所有节点的子节点压入数组,直到访问完所有层次。代码

2016-04-10 16:50:51 445

原创 如果链表可能有环,判断两个链表是否相交?

题目来源:编程之美 《3.6 编程判断两个链表是否相交?》的扩展问题。上网查找了写资料现做个总结。可以分两步:(1)判断两个链表是否有环?若有环,入口点是什么?(2)判断是否相交?第一个问题的典型解法为设置两个指针p1和p2,p1每次走一步,p2每次走两步,若有环,则p1和p2一定会相遇,否则没有环。当p1和p2相遇时,另p2回到链表起始处,每次走一步和p1同时移动

2016-04-07 21:40:28 383

原创 编程之美2.21 只考加法的面试题

问题1:写一个程序,对于一个数,输出他所有可能的连续自然数之和的算式。解:num = a + a+1 + a+2 + a+3 + ...... + a+k-2 + a+k-1 = k(a+a+k-1)/2            = ka + k(k-1)/2        k是整数,a是整数,所以k(k-1)/2也是整数。#include using namespa

2016-04-06 20:39:06 587 1

原创 蛇形矩阵(螺旋矩阵)

晚上参加腾讯2016实习生网上笔试,结果一团糟,提前交了之后对最后一个蛇形矩阵的编程题心有不甘,于是就花了点时间,最终还是搞出来了。蛇形矩阵,又称为螺旋矩阵,如下图所示。解法很简单,只是有点绕,因为都是数字很自然的矩阵用数组存储,那么如何判断什么时候转弯换方向呢?首先一开始先将最外层建立起来,将这层“围墙”建立起来后面就好办了,这层根据输入的矩阵大小而定,非常容易建立,

2016-04-03 21:54:43 1995

原创 小数的精确表达

题目:给定一个有限小数或无限循环小数,你能否以分母最小的分数形式来返回这个小数呢?解法:1、对于有限小数X=0.a1a2…an来说比较简单,X就等于(a1a2…an)/10^n。2、对于无限循环小数X=0.a1a2…an(b1b2…bm)做如下转换:X = 0.a1a2…an(b1b2…bm) => 10^n*X = a1a2…an+0.(b1b2…bm)另Y = 0.(b1b

2016-04-03 15:05:45 345

原创 寻找最大的k个数

问题:找出一个序列中最大的k个数。解法:一、假设N个数存储在数组S中,我们从数组S随机找出一个元素X,把数组分成为两个部分Sa和Sb。Sa中元素大于等于X,Sb中的元素小于X。则有两种可能性:1.Sa中元素的个数小于k,Sa中所有的数的和Sb中最大的k-|Sa|个元素就是S中最大的k个数。                2.Sa中的个数大于或等于k,则返回Sa中最大的k个元素。

2016-04-01 11:12:27 254

原创 统计从1到N的所有整数中出现1的个数

问题:给定一个十进制的正整数N,写下从1开始到N的所有整数,然后数一下其中出现的所有“1”的个数。解:假设N=abcde,这里abcde分别是十进制数N的各个数位上的数字。例如我们计算百位上出现1的次数,它将会受到三个因素的影响:百位上的数字,百位一下,百位以上的数字。对于2位数来说,个位数出现1的次数不仅和个位数字有关,还和十位数有关:如果N的个位数大于等于1,则个位出现1的次数为十

2016-03-31 18:35:30 1787

原创 算法-分治法(精简)

分治法这几天想看看算法的整体大概的一些东西,但算法导论那本书实在太复杂,于是就自己上网找博客,看了个大概,这篇文章是个人精简自五大常用算法之一:分治算法这篇文章,这篇文章讲的比较详细,感兴趣的可以参考原文,好,开始!1. 分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

2016-03-30 18:44:18 300

原创 最大子矩阵和问题

问题:给定一个n*n(0思路:将其分解为最大子段和问题,利用最大子段和去求解,#include #include using namespace std;/*最大子矩阵问题,通过分解为最大子段问题求解,而最大子段问题可以用动态规划解决。*/int a[][3] = {{4,-2,9},{-1,3,8},{-6,7,6},{0,9,-5}};int maxsubsum(in

2016-03-30 16:54:51 411

原创 [offer收割]编程练习赛3-题目2:机会渺茫

题目2 : 机会渺茫时间限制:5000ms单点时限:1000ms内存限制:256MB描述小Hi最近在追求一名学数学的女生小Z。小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要求:对于给定的两个正整数N和M,小Hi随机选取一个N的约数N',小Z随机选取一个M的约数M',如果N'和M'相等,她就答应小Hi。小Z让小Hi去编写这

2016-03-28 18:44:52 499

原创 大数乘法

输入两个整数,要求输出这两个数的乘积。输入的数字可能超过计算机内整形数据的存储范围。思路:模拟实际乘法操作即可。收获:最大收货是知道了new和memset怎么搭配使用。具体如下:动态分配(例如分配n个单元的): int *array=newint [n]; 初始化:memset(array,0,n*sizeof(array));       (也可以利用

2016-03-27 16:53:54 252

原创 虚拟游戏世界实体分析

题目1 : 虚拟游戏世界实体分析时间限制:5000ms单点时限:1000ms内存限制:256MB描述虚拟游戏世界里面有很多实体,实体可能由很多子实体或者子属性构成。由于实体之间可能有非常之多的嵌套,查询某个实体或者属性属于第几层嵌套,以便将来对虚拟世界的修改和展示是一项待解决的问题,作为未来的虚拟世界分析员,你能用程序解决这个问题吗?

2016-03-26 16:40:18 611

原创 网易互娱2017实习生招聘在线笔试第一场-题目3

题目3 : 画线时间限制:10000ms单点时限:1000ms内存限制:256MB描述小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈。于是他打算从最基本的画线功能开始分析优化。画线其实就是调用一次drawline命令,根据给出的两端坐标,在屏幕画出对应的线段。但是小王发现,很多的drawline其实可以合并在一起,譬如下图中的

2016-03-25 15:00:39 798

原创 网易互娱2017实习生招聘在线笔试第一场-电子数字

题目1 : 电子数字时间限制:10000ms单点时限:1000ms内存限制:256MB 描述电子数字在生活中很常见,而许多的电子数字是由LED数码管制作而成。数字LED数码管一般由7个发光二极管封装在一起,组成'8'字型,引线在内部连接完成。如下图所示,我们可以对每个发光管进行编码从1到7。而数字0到数字9可以由这七根

2016-03-24 21:07:11 781

空空如也

空空如也

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

TA关注的人

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