自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 华为笔试:域名排序

1. 题目描述  主机名由多级域名组成,自右向左,依次是顶级域名、二级域名、三级域名……以此类推。 例如:主机名: google.com.hk   hk是顶级域名   com是二级域名   google是三级域名   现在我们需要实现一个主机名的排序功能 排序规则:   (1)主机名按照域名等级排序,即先按照顶级域名排序,顶级域名相同的再按照二级域名排序,顶级域名和二级域名均相同的再按

2017-09-27 12:23:21 1810

原创 算法:解救小易

1. 题目描述  有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为xi ,纵坐标为yi 的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。 输入描述:

2017-09-26 11:15:16 796

原创 算法:网格走法数目

1. 题目描述  有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。   输入一行为X,Y;输出一行为走法数目2. 思路分析  该题与“走台阶“的题目异曲同工。   根据题目描述,走格时只能向下走或向右走。则假若目标格为(n,m),那么走向目标节点的走法就有两种,分

2017-09-24 14:16:41 2736

原创 剑指offer——把二叉树打印成多行

1. 题目描述  从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。2. 思路解析  思路就是借助两个辅助单向队列queue来实现,暂且叫他们help1和help2。先把根节点压入help1,然后依次取出help1里面的元素,将其值放入保存结果的vector中,并将其左右节点压入help2,直至help1为空。此时help2中就放满了第二行的所有树节点,然后依次取出help2里面的元素

2017-08-28 17:26:29 407

原创 剑指offer——二叉搜索树的第k个节点

1. 题目描述&esmp;&esmp;给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。2. 思路分析&esmp;&esmp;首先一点要清晰二叉搜索树的特点,也就是:左孩子<父节点<右孩子。所以,根据这一特点可知,二叉搜索树的中序遍历结果就是一个升序的序列。题目中的实例可知,是将二叉搜索树的元素升序排列后找

2017-08-28 16:44:46 322

原创 剑指offer——扑克牌顺子

1. 题目描述  LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为1

2017-08-24 19:56:48 267

原创 剑指offer——反转单词顺序列

1. 题目描述  牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?2. 思路分析  思

2017-08-24 16:40:20 371

原创 剑指offer——左旋转字符串

1. 题目描述  汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!2. 思路分析  额。。我能想到的。。循环左移就是对字符串进行了一个截断。。然后把截取的前半部

2017-08-24 15:36:33 252

原创 剑指offer——和为S的两个数字

1. 题目描述&esmp;&esmp;输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: &esmp;&esmp;对应每个测试案例,输出两个数,小的先输出。2. 思路分析&esmp;&esmp;首先,先考虑在递增排序的数组中找到两个和为S的数字。这个思路就较为简单,利用二分方法,分别从头尾向中间检索,如果头

2017-08-24 14:56:46 302

原创 剑指offer——和为S的连续正数序列

1. 题目描述  小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:   输出所有和为S的连

2017-08-24 14:18:18 234

原创 剑指offer——数组中只出现一次的数

1. 题目描述  一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。2. 思路分析  我觉得这道题最方便快捷的方式就是用哈希记录每个数字出现的次数,然后找到hash值为1的即可。3. 解答——cppclass Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,i

2017-08-24 11:14:59 210

原创 剑指offer——数字在排序数组中出现的次数

1. 题目描述  统计一个数字在排序数组中出现的次数。2. 思路分析  讲道理在第一次做到这道题的时候,没有什么完整的思路。就是想到先判定已知数组是不是为空,然后对数组进行一个二分查找。从头开始查找到第一个出现的目标数字为止,从尾向头查找第一个出现的目标数字,然后将两个位置相减即可。其中要考虑到头指针没有遍历到的情况。因为我思路比较乱,所以代码也并不是很美丽。先贴在这里,然后继续慢慢优化吧。3. 题

2017-08-24 10:14:23 229

原创 剑指offer——数组中的逆序对

1. 题目描述  在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%10000000072. 题目分析  同样首先想到的是暴力破解的方法,但是暴力破解的时间复杂度太高了。于是进一步的想到归并的方法。前面又一个题目是求数组的和最大的子数组,使用的也是归并的方法。所以套用归

2017-08-23 16:22:35 373

原创 剑指offer——第一次只出现一次的字符

1. 题目描述  在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置2. 思路分析  先简单说一下暴力破解的思路吧。暴力破解就依次对每一个字符进行判断,遍历字符串中的字符,看看是否跟他有相等的字符,没找到的话,函数就返回当前字符,找到了的话就对下一个字符进行遍历判断,如果到最后一个字符都没有找到只出现一次的字符,那就返回-1。   暴力破解的

2017-08-23 11:10:56 189

原创 剑指offer——丑数

1. 题目描述  把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。2. 思路分析  该题目大致的思路就是从第一个丑数1开始计算,利用已知的丑数计算下一个丑数,直到计算出目标丑数为止。3. 题目解答——cppclass Solution {public: int

2017-08-23 10:28:35 271

原创 京东笔试题——集合

1. 题目描述  给你两个集合,要求{A} + {B}。 注:同一个集合中不会有两个相同的元素。2. 题目解析  首先想到是暴力破解的方法。原因是之前坐过一道两个排序链表融合的题,就是分别对比链表头的元素的大小然后取小的一端连接到答案链表中。于是我的暴力破解的思路就是将两个数据进行升序排序,一次找最小的元素放置在答案数组中。【但是,这里是转折】这种方法在本地进行计算是没有问题的,但是在线测试大规模数

2017-08-22 20:01:39 582

原创 京东笔试题——幸运数

1. 题目描述  小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)。 f(x)表示把x这个数用十进制写出后各个数位上的数字之和。如f(123)=1+2+3=6。 g(x)表示把x这个数用二进制写出后各个数位上的数字之和。如123的二进制表示为1111

2017-08-22 16:44:01 879

原创 京东笔试题——进制均值

1. 题目描述  尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题,现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示为三位数1、7、3,按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11,。 小B感兴趣的

2017-08-22 16:39:23 669

原创 剑指offer——把数组排成最小的数

1. 题目描述  输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。2. 题目分析  首先我想到了前面字符串重新排列并按序输出的那道题。然后我想到了一个方案,就是将数组中的元素进行排列,分别将得到的所有数组链接成字符串,找出最小的一个。但是这个方案在本地运行的时候正常,提交在

2017-08-21 21:03:56 286

原创 剑指offer——连续子数组的最大和

1. 题目描述  HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量

2017-08-21 16:34:11 231

原创 剑指offer——按之字形顺序打印二叉树

1. 题目描述  请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。2. 题目分析  开始分析这道题时,我们先画出一个二叉树做示例就能看的比较清楚了。也就是奇数行是从左至右,偶数行是从右至左。   我们定义两个栈,stack1存储奇数行,stack2存储偶数行。现将根节点压入stack1,然后将其左右节点

2017-08-16 17:26:18 201

原创 剑指offer——对称的二叉树

1. 题目描述  请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2. 题目分析  根据题目描述,首先要明确二叉树的镜像的定义。镜像二叉树,就是将原二叉树的左右子树进行交换。那么对称二叉树,就是一颗二叉树的镜像树和他本身相等。镜像后,二叉树的左子树变成右子树,右子树变成左子树树了。要对比原二叉树的左子树和镜像树的右子树,及原二叉树的右子树

2017-08-16 16:06:40 208

原创 剑指offer——平衡二叉树

1. 题目描述  输入一棵二叉树,判断该二叉树是否是平衡二叉树。2. 题目分析  平衡二叉树,即左右子树高度差不超过一的二叉树。所以,判断一个二叉树是否是平衡二叉树,就要求取其左右子树的高度。所以本题中需要使用一个辅助函数来求取树的高度(深度)。3. 题目解答——cppclass Solution {public: bool IsBalanced_Solution(TreeNode* pR

2017-08-16 15:18:37 243

原创 剑指offer——二叉树的深度

1. 题目描述  输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。2. 题目分析  顾名思义,即求取二叉树的深度。这是一个典型的递归题,可能是剑指里面最简单的题目了。我们将树的叶子节点的左右NULL节点填满,则NULL节点的深度为零,叶子节点的深度为一。使用递归方式,一次求取其父节点的深度,一直求取到root根为止。在求取过程中

2017-08-16 15:03:40 241

原创 剑指offer——二叉树的下一个节点

1. 题目描述  给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。2. 思路分析  在编写程序之前,先缕清思路。在该题总,应该分不同情况对其进行讨论。 情况一:(鲁棒性)目标节点为空节点时返回ptr; 情况二:目标节点没有父节点且没有右子树时,即该节点就是中序遍历的最后一个元素了,下一个节点为nullptr;

2017-08-16 10:40:01 257

原创 剑指offer——二叉搜索树与双向链表

1. 题目描述  输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。2. 题目分析  二叉搜索树的性质:左子树小于根节点,右子树大于根节点。所以,将二叉搜索树转换成一个排序的双向列表,即从头至尾的顺序为:左子树、根节点、右子树。   但是要特别注意的是,在双向链表中,第一个元素也是有指向前一个元素的指针的,只不过是nullptr,所以

2017-08-14 15:13:58 210

原创 剑指offer——复杂链表的复制

1. 题目描述  输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)2. 题目分析  复制一个新的复杂链表的思路大概可以分为三个步骤: 1) 对当前链表中的每个节点都进行复制,复制节点插入在原节点的后面。即链表(在该例子中没有指出ran

2017-08-14 12:46:24 193

原创 剑指offer——二叉搜索树的后续遍历序列

此文感谢:http://www.cnblogs.com/loongfee/archive/2012/05/05/2484574.html1. 题目描述  输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2. 题目分析  根据二叉搜索树的后序遍历的特点:序列中最后一个元素应该为二叉搜索树的根,序列前部的所有小于根

2017-08-13 23:53:36 250

原创 剑指offer——从上往下打印二叉树

1. 题目描述  从上往下打印出二叉树的每个节点,同层节点从左至右打印。2. 题目分析  本道题目的思路就是定义一个容器,存放待打印节点。 1)当前待打印节点为根节点,将根节点放入help容器中。 2)打印help容器中的第一个节点 3)将已经打印过的第一个节点的左右子树一次存入help容器 4)删除刚才已经打印过的第一个节点,此时help容器中的前两个节点就是已打印节点的左右子树 5)一

2017-08-13 22:53:06 232

原创 剑指offer——普通二叉树的子结构

1.题目描述  输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2.解题思路  首先要进行程序的鲁棒性分析: 1. 如果B为空树,那么判断结果为false,因为空树不是任意一棵树的子结构; 2. 如果A为空树,那么判断结果也为false。   如此分析以后,只需对A与B均不是空树的情况进行分析。分析思路如下: 1)判断当前A节点和B树的根节点是否相等

2017-08-10 10:25:42 281

原创 剑指offer——二叉树的镜像

1. 题目描述  操作给定的二叉树,将其变换为源二叉树的镜像。    源二叉树:    8    / \    6 10    / \ / \    5 7 9 11 镜像二叉树    8    / \

2017-08-10 10:13:44 260

原创 剑指offer——反转链表

1. 题目描述  输入一个链表,反转链表后,输出链表的所有元素。2. 题目分析  题目的意思就是,假若你输入的链表是{5, 4, 3, 2, 1},那么输出的结果应该是{1, 2, 3, 4, 5}。一开始犯了一个逻辑性的错误,就是单纯的从头遍历,然后一次把前面的元素挪到链表后面去了。知道运行结果出来才反映过来这不是没变么。。。   正确的思路应该是将指针倒转。 原链表是:5 -> 4 -> 3

2017-07-28 16:08:08 187

原创 剑指offer——链表中倒数第k个节点

1. 题目描述  输入一个链表,输出该链表中倒数第k个结点。2. 分析  链表不像数组一样有下标。所以需要用指针操作。可以对指针进行操作。   方法一:先利用指针进行计数,然后从头挪动指针len-k次,即可。len是链表中元素的个数。   方法二是先将指针挪动到最末,然后超前移动k次。但因为单向链表只有后项链接指针,所以该方法不适用。3. 题目解答/*struct ListNode {

2017-07-28 13:24:20 231

原创 mac安装clion、opencv及简单测试

1. 安装clion  在clion官网下载的安装包。本来在知乎上有妹子说这个软件学生免费,结果找了半天也没找到那个链接。在网上找了几个注册码也没成功,所以。。我的暴脾气。。就直接上淘宝买了一个,几块钱,剩下了时间成本,挺好的。哈哈哈~吧这个注册码贴出来,大家分享吧。clion的版本是mac版本的2017.2。注册码如下:BSJK89HP2N-eyJsaWNlbnNlSWQiOiJCU0pLODlI

2017-07-26 22:45:42 3808 1

原创 剑指offer——数值的整数次方

1. 题目描述  给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。2. 题目分析  最首先想到的是暴力破解的方法,即float ans = 1.0;for(int i = 1;i<=n;i++){ ans *= base;}但是貌似暴力破解的方式看起来不太文明。所以转念就想到了递归。举个例子说明: Power(2,4)=16

2017-07-25 18:18:22 242

原创 剑指offer——斐波那契数列

1. 题目描述  大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=392. 题目分析  首先要了解什么是斐波那数列。即a[n] = a[n-1] + a[n-2]。我深刻的记住了斐波那契的原因是一个梗,说的是“食堂的汤叫斐波那契汤,因为今天的汤等于昨天的汤加上前天的汤。”。3. 题目解答——cppclass Solution {public: int F

2017-07-24 15:47:47 547

原创 剑指offer——旋转数组的最小数字

1. 题目描述  把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。2. 题目分析  这道题的描述看起来貌似很长,其实就是一个数组的排序问题。对旋转后的数组进行重新的升序排序

2017-07-24 15:39:42 176

原创 剑指offer——用两个栈实现队列

1. 题目描述  用来两个栈来实现一个队列,并完成队列的push和pop操作。队列中的元素全为整数。2. 题目分析  首先要清晰两个概念:栈和队列。栈是先入后出,队列是先入先出。所以,实现队列的push操作较为简单,即向一个栈中依次push数据即可。而队列的pop操作,需要弹出最早进入队列的元素,即最早被压入栈stack1的元素。可见,该元素在stack1的最低端,而栈是先入后出,所以若想弹出这个元

2017-07-24 14:33:13 214

原创 c++中四种类型转换方式

1 static_cast  在编辑阶段完成。实现c++中内置基本类型间的转换,如int、char、enum、struct等。如:float a = 2.8;int b = static_cast<int>(a);  涉及到类之间的转换时,只能进行有联系的类间转换,有没有虚函数都能够进行类型转换。如:class Apple{};class Fruit{}:public Apple;class

2017-07-20 13:27:38 435

转载 c++中动态绑定的技术实现

转自http://www.cnblogs.com/hustdc/p/6485913.html1 什么是动态绑定  有一个基类,两个派生类,基类有一个virtual函数,两个派生类都覆盖了这个虚函数。现在有一个基类的指针或者引用,当该基类指针或者引用指向不同的派生类对象时,调用该虚函数,那么最终调用的是该被指向对象对应的派生类自己实现的虚函数。2 为何能够在运行时找到派生类自己实现的虚函数呢?2.1

2017-07-20 10:20:56 903

空空如也

空空如也

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

TA关注的人

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