08 2017 档案
按之字形顺序打印二叉树
摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *rig 阅读全文
posted @ 2017-08-31 21:55 王小东大将军 阅读(142) 评论(0) 推荐(0)
对称的二叉树
摘要:题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int 阅读全文
posted @ 2017-08-31 17:00 王小东大将军 阅读(114) 评论(0) 推荐(0)
二叉树的下一个结点
摘要:题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 分析二叉树的下一个节点,一共有以下情况: 1.二叉树为空,则返回空; 2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找 阅读全文
posted @ 2017-08-31 16:38 王小东大将军 阅读(139) 评论(0) 推荐(0)
字符流中第一个不重复的字符
摘要:题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。 思路:时间复 阅读全文
posted @ 2017-08-29 10:27 王小东大将军 阅读(132) 评论(0) 推荐(0)
表示数字的字符串
摘要:题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 class Solution { pub 阅读全文
posted @ 2017-08-29 09:48 王小东大将军 阅读(364) 评论(0) 推荐(0)
构建乘积数组
摘要:题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 class Solution { public: vector<int> multip 阅读全文
posted @ 2017-08-29 09:17 王小东大将军 阅读(108) 评论(0) 推荐(0)
扑克牌顺子
摘要:题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.. 阅读全文
posted @ 2017-08-29 08:45 王小东大将军 阅读(175) 评论(0) 推荐(0)
数组中重复的数字
摘要:题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 class Solut 阅读全文
posted @ 2017-08-28 21:16 王小东大将军 阅读(226) 评论(0) 推荐(0)
字符串转换为整数
摘要:题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 class Solution { public: int Str 阅读全文
posted @ 2017-08-28 19:58 王小东大将军 阅读(186) 评论(0) 推荐(0)
约瑟夫问题
摘要:题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任 阅读全文
posted @ 2017-08-25 18:30 王小东大将军 阅读(127) 评论(0) 推荐(0)
不用+、-、×、÷对两个数求和
摘要:题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路: 主要分成3步: 第一步不考虑进位,对每一位相加。0加0与1加1的结果都0,0加1与1加0的结果都是1。我们可以注意到,这和异或的结果是一样的。对异或而言,0和0、1和1异或的结果是0,而0和1、1和0的 阅读全文
posted @ 2017-08-25 16:35 王小东大将军 阅读(668) 评论(0) 推荐(1)
求1+2+……+n的和
摘要:题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 class Solution { public: int Sum_Solution(int n) { int sum=0; sum=(1+n)*n 阅读全文
posted @ 2017-08-25 16:10 王小东大将军 阅读(398) 评论(0) 推荐(0)
回溯法的应用举例
摘要:子集合问题 求集合S的所有子集合(不包括空集),可以按照框架一的算法写代码。 1 #include<iostream> 2 using namespace std; 3 int s[4]={3,5,7,9}; 4 int x[4]; 5 int N=4; 6 7 void print() { 8 f 阅读全文
posted @ 2017-08-23 16:42 王小东大将军 阅读(849) 评论(0) 推荐(0)
回溯法
摘要:回溯法 所谓”搜索“是指利用计算机的高性能有目的地穷举一个问题的部分或所有的解(候选解),然后依次检查每一个候选解,在检查完所有或部分候选解后,即可找到满足某种条件所需要的解。 回溯法的基本概念 回溯和分枝定界是目前搜索算法中比较常用的两种控制策略。通过它们可以避免对很大的候选解集合进行检查,同时能 阅读全文
posted @ 2017-08-23 15:58 王小东大将军 阅读(685) 评论(0) 推荐(0)
翻转单词顺序列
摘要:题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a 阅读全文
posted @ 2017-08-23 12:13 王小东大将军 阅读(135) 评论(0) 推荐(0)
左旋转字符串
摘要:题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 阅读全文
posted @ 2017-08-22 23:27 王小东大将军 阅读(98) 评论(0) 推荐(0)
和为S的两个数字
摘要:题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S, 阅读全文
posted @ 2017-08-22 19:29 王小东大将军 阅读(216) 评论(0) 推荐(0)
平衡二叉树
摘要:题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 您的代码已保存编译错误:您提交的代码无法完成编译In file included from a.cc:2:./solution.h:6:14: error: array initializer 阅读全文
posted @ 2017-08-22 18:51 王小东大将军 阅读(236) 评论(0) 推荐(0)
二叉树的深度
摘要:不通过 您的代码已保存段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起 递归思路! /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(in 阅读全文
posted @ 2017-08-22 16:33 王小东大将军 阅读(148) 评论(0) 推荐(0)
和为S的连续正数序列
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
posted @ 2017-08-21 11:46 王小东大将军 阅读(130) 评论(0) 推荐(0)
数组中只出现一次的数字
摘要:题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 您的代码已保存编译错误:您提交的代码无法完成编译In file included from a.cc: 阅读全文
posted @ 2017-08-21 11:11 王小东大将军 阅读(246) 评论(0) 推荐(0)
删除链表中重复的结点
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 1 递归 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链 阅读全文
posted @ 2017-08-19 17:03 王小东大将军 阅读(211) 评论(0) 推荐(0)
链表中环的起点
摘要:题目描述 一个链表中包含环,请找出该链表的环的入口结点。 一个链表中包含环,请找出该链表的环的入口结点。 您的代码已保存运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。case通过率为0.00% 通过重新查阅程序,发现部分错误: while(fast=slow)应该写 阅读全文
posted @ 2017-08-19 15:39 王小东大将军 阅读(313) 评论(0) 推荐(0)
两个链表第一个公共点
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。 思路:用两个指针扫描”两个链表“,最终两个指针到达 null 或者到达公共结点。 代码所基于的想法是,将两个链表L1和L2进行拼接,得到L1+L2和L2+L1两个拼接结果。这两个拼接后的链表长度是一致的,那么逐个判断即可。 /* struct Li 阅读全文
posted @ 2017-08-19 10:48 王小东大将军 阅读(134) 评论(0) 推荐(0)
复杂链表的复制
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 1.递归法 /* struct RandomListNode { int 阅读全文
posted @ 2017-08-19 10:08 王小东大将军 阅读(176) 评论(0) 推荐(0)
用两个栈实现一个队列
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 用两个栈实现一个队列的功能?要求给出算法和思路! <分析>: 入队:将元素进栈A 出队:判断栈B是否为空,如果为空,则 阅读全文
posted @ 2017-08-18 12:45 王小东大将军 阅读(174) 评论(0) 推荐(0)
重建二叉树
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二 阅读全文
posted @ 2017-08-18 12:12 王小东大将军 阅读(175) 评论(0) 推荐(0)
数字在排序数组中出现的次数
摘要:题目描述 统计一个数字在排序数组中出现的次数。 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { int n=data.size(); int cnt=0; for(int i=0;i<n;i++) { if(d 阅读全文
posted @ 2017-08-16 22:15 王小东大将军 阅读(215) 评论(0) 推荐(0)
丑数
摘要:题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3 阅读全文
posted @ 2017-08-16 21:32 王小东大将军 阅读(176) 评论(0) 推荐(0)
第一个只出现一次的字符
摘要:题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 您的代码已保存运行错误:请检查是否存在数组、列表等越界非法访问,内存非法访 阅读全文
posted @ 2017-08-16 21:11 王小东大将军 阅读(181) 评论(0) 推荐(0)
把数组排成最小的数
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 /*对vector容器内的数据进行排序,按照 将a和b转为string后 若 a+b<b+a a排在在前 的规则 阅读全文
posted @ 2017-08-16 20:01 王小东大将军 阅读(144) 评论(0) 推荐(0)
整数中1出现的次数(1~n)
摘要:题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 求出1 阅读全文
posted @ 2017-08-16 19:08 王小东大将军 阅读(263) 评论(0) 推荐(0)
连续子数组的最大和
摘要:题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1 阅读全文
posted @ 2017-08-16 17:53 王小东大将军 阅读(140) 评论(0) 推荐(0)
最小的K个数
摘要:题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 另外的思路:利用查找一个数列中第k大的数, 阅读全文
posted @ 2017-08-16 15:47 王小东大将军 阅读(159) 评论(0) 推荐(0)
数组中出现次数超过一半的数字
摘要:题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 我一开始自己的思路是利用桶排序法,把每次出现的数标记并增加1,最后遍历一些数组 阅读全文
posted @ 2017-08-16 15:31 王小东大将军 阅读(160) 评论(0) 推荐(0)
洗牌
摘要:洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一 阅读全文
posted @ 2017-08-11 17:58 王小东大将军 阅读(225) 评论(0) 推荐(0)
构造队列
摘要:小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序: 做取出队头的值操作的时候,并不弹出当前队头。小明同学发现,这段程序恰好按顺序输出了1,2,3,...,n。现在小明想让你构造出原始的队列,你能做到吗?[注:原题样例第三行5有错,应该为3,以下已修正] 示例1 阅读全文
posted @ 2017-08-11 17:03 王小东大将军 阅读(197) 评论(0) 推荐(0)
字符串的排列
摘要:题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 输入一个字符串,按字典序打印出 阅读全文
posted @ 2017-08-08 22:32 王小东大将军 阅读(176) 评论(0) 推荐(0)
二叉搜索树和双向链表
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 阅读全文
posted @ 2017-08-08 20:56 王小东大将军 阅读(144) 评论(0) 推荐(0)
二叉树的和为某一条路径
摘要:题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 //非 阅读全文
posted @ 2017-08-08 20:18 王小东大将军 阅读(254) 评论(0) 推荐(0)
红黑树与AVL
摘要:红黑树和avl树都属于自平衡二叉树; 两者查找、插入、删除的时间复杂度相同; 包含n个内部结点的红黑树的高度是o(logn); TreeMap是一个红黑树的实现,能保证插入的值保证排序 关于红黑树和AVL树,来自网络: 1 好处 及 用途 红黑树 并不追求“完全平衡”——它只要求部分地达到平衡要求, 阅读全文
posted @ 2017-08-08 18:15 王小东大将军 阅读(264) 评论(0) 推荐(0)
死锁问题
摘要:哲学家就餐问题:当5个进程的时候如果都同时申请到了1台,就发生死锁了。如果是4个进程,那必然有一个能申请到2台。 虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。 1 )互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由 阅读全文
posted @ 2017-08-08 17:32 王小东大将军 阅读(100) 评论(0) 推荐(0)
TCP_NODELAY算法使用事项
摘要:当有一个TCP数据段不足MSS,比如要发送700Byte数据,MSS为1460Byte的情况。nagle算法会延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段。也许有人会问,这有什么影响呢?没有太大的影响,总体上来说,这种措施能节省不必要的资源消耗。但是要发送的总体数据很小时,这种措 阅读全文
posted @ 2017-08-08 17:13 王小东大将军 阅读(629) 评论(0) 推荐(0)
二叉搜索树的后序遍历
摘要:题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 递归 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 递归 阅读全文
posted @ 2017-08-07 16:45 王小东大将军 阅读(138) 评论(0) 推荐(0)
从上到下打印二叉树
摘要:题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 /* C++ 循环 实现 要打印成一行,即用动态数组存储即可 这道题考的是广度优先遍历算法,这个算法是用队列这种数据结构实现的。 STL中的deque是“两端都可以进出”的队列, 阅读全文
posted @ 2017-08-07 15:50 王小东大将军 阅读(253) 评论(1) 推荐(0)
栈的压入、弹出序列
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是 阅读全文
posted @ 2017-08-07 15:15 王小东大将军 阅读(191) 评论(0) 推荐(0)
包含min函数的栈
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 /* * 1.dataStack为存储数据的栈,minStack为存储最小值的栈; * 2.push的时候将value值与minStack中的to 阅读全文
posted @ 2017-08-07 14:31 王小东大将军 阅读(121) 评论(0) 推荐(0)
顺时针打印矩阵
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 另外一种思路: 用旋转魔法的方式,一直取 阅读全文
posted @ 2017-08-07 12:01 王小东大将军 阅读(116) 评论(0) 推荐(0)
二叉树的镜像
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5递归 /* struct TreeNode { int val; struct T 阅读全文
posted @ 2017-08-07 10:43 王小东大将军 阅读(119) 评论(0) 推荐(0)
树的子结构
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val( 阅读全文
posted @ 2017-08-06 11:21 王小东大将军 阅读(160) 评论(0) 推荐(0)
合并两个排序链表
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路:非递归 class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(!pHead1) 阅读全文
posted @ 2017-08-06 10:45 王小东大将军 阅读(142) 评论(0) 推荐(0)
输出链表的倒数第K个值
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路一:链表不能向前遍历,只能向后遍历。因此倒数第K个结点就是 正序的 :len(链表)-1-K的下一个。 注意,此处的思路与代码中具体实现有点不同,但是 是一致的。假设用i=0计数,那么应该就是i<len(链表)-k 或者 i<=len(链表) 阅读全文
posted @ 2017-08-05 21:18 王小东大将军 阅读(738) 评论(0) 推荐(0)
反转链表
摘要:题目描述 输入一个链表,反转链表后,输出链表的所有元素 输入一个链表,反转链表后,输出链表的所有元素 下面这思路居然 溢出,超时!!! http://blog.csdn.net/feliciafay/article/details/6841115 http://blog.csdn.net/hyqso 阅读全文
posted @ 2017-08-05 20:01 王小东大将军 阅读(138) 评论(0) 推荐(0)
调整该数组中数字的顺序,奇数在前,偶数在后
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后 阅读全文
posted @ 2017-08-05 16:02 王小东大将军 阅读(389) 评论(0) 推荐(0)
基类与派生类的对象调用
摘要:下列代码之后的结果为( ) 1.b.f(); 基类对象直接调用基类的f()函数,输出a 2.p->f(); 派生类对象赋给基类的指针,由于f()在基类中是虚函数,根据基类指针指向的对象进行调用,因此调用派生类的int f()输出d 3.p->g();基类中g()不是虚函数,调用基类的g() 4.p_ 阅读全文
posted @ 2017-08-05 15:26 王小东大将军 阅读(2476) 评论(0) 推荐(0)
printf以%d形式输出浮点数的问题
摘要:若运行时从键盘上输入9876543210l,则下面程序的输出结果是 int main(){ int a;float b,c; scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d,b=%d,c=%f\n",a,b,c); } A.a=98,b=765,c=4321. 阅读全文
posted @ 2017-08-05 12:29 王小东大将军 阅读(3500) 评论(0) 推荐(0)
数值的整数次方
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路: 1 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况 2 机器中浮点数的比较是由误差的,因此double类型的比较,不能用简单的a==0来比较。一般 阅读全文
posted @ 2017-08-04 23:12 王小东大将军 阅读(130) 评论(0) 推荐(0)
输出该数二进制表示中1的个数
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 先来复习一下位操作的相关知识。http://blog.sina.com.cn/s/blog_618199e60100ka5b.html class Solution { public: int NumberOf1(int n 阅读全文
posted @ 2017-08-04 22:03 王小东大将军 阅读(337) 评论(0) 推荐(0)
矩形覆盖
摘要:题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路分析: 痛定思痛,还是不能 阅读全文
posted @ 2017-08-04 20:47 王小东大将军 阅读(137) 评论(0) 推荐(0)
变态跳台阶
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路:每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台 阅读全文
posted @ 2017-08-04 20:13 王小东大将军 阅读(123) 评论(0) 推荐(0)
跳台阶
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 class Solution { public: int jumpFloor(int number) { if(number==1) return 1; else if(number==2) ret 阅读全文
posted @ 2017-08-04 19:38 王小东大将军 阅读(175) 评论(0) 推荐(0)
斐波那契数列
摘要:题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 n<=39 阅读全文
posted @ 2017-08-04 19:29 王小东大将军 阅读(168) 评论(0) 推荐(0)
旋转数组的最小值
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路,一开 阅读全文
posted @ 2017-08-04 19:12 王小东大将军 阅读(207) 评论(0) 推荐(0)
23 入栈 出栈
摘要:分析下列程序输出:string 分析:看完如下的结果即可。补充一下:Push(S,x)是往S中入栈,Pop(S,x)是从S中出栈,并把出栈的元素取代x中的元素。 阅读全文
posted @ 2017-08-03 10:21 王小东大将军 阅读(423) 评论(1) 推荐(0)
重建二叉树
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二 阅读全文
posted @ 2017-08-02 23:25 王小东大将军 阅读(130) 评论(0) 推荐(0)
22 大端序和小端序
摘要:分析下列程序,输出结果(AC) A 2015,810 B50810,201 C810,2015 D20150,810 分析: Little-Endian: 低地址存放低位、Big-Endian: 低地址存放高位 32bit宽的数0x12345678 在Little-endian模式CPU内存中的存放 阅读全文
posted @ 2017-08-02 22:47 王小东大将军 阅读(194) 评论(0) 推荐(0)
反转单链表
摘要:题目描述 输入一个链表,从尾到头打印链表每个节点的值。 输入一个链表,从尾到头打印链表每个节点的值。 思路:利用栈的入栈性质,把链表的数都压栈。然后出栈,把所有出栈的数添加到vector中,最后返回vector。 关于不太了解stack、vector中push、push_back性质的可以查阅如下博 阅读全文
posted @ 2017-08-02 12:44 王小东大将军 阅读(158) 评论(0) 推荐(0)
替换空格
摘要:题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Ar 阅读全文
posted @ 2017-08-02 10:22 王小东大将军 阅读(128) 评论(0) 推荐(0)
二维数组中的查找
摘要:题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 /* 思路 * 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增, * 因此从左下角开始查找,当要查找数字比左下角数 阅读全文
posted @ 2017-08-02 09:40 王小东大将军 阅读(211) 评论(0) 推荐(0)
21 野指针
摘要:分析下列程序,输出结果:不确定,未定义行为。 指针释放存储空间后没有置为NULL,变成野指针。 分析:野指针,不能通过简单的NULL进行判断,delete或free只是释放了指针所指向的内存区域,并没有干掉指针本身,所以指针指向的是“垃圾”指针,所以free或者delete之后要把指针置为NULL。 阅读全文
posted @ 2017-08-01 21:33 王小东大将军 阅读(176) 评论(0) 推荐(0)
20 KMP匹配的Next值和Nextval值
摘要:i 0 1 2 3 4 5 6 7 8 s a b a b a a b a b next[i] -1 0 0 1 2 3 1 2 3 先计算前缀next[i]的值: next[i]的值主要是看s[i]之前的字符串中重复的子串长度。next[0] = -1,定值。 next[1]是看s[1]之前的字符 阅读全文
posted @ 2017-08-01 20:27 王小东大将军 阅读(576) 评论(0) 推荐(0)
19 内存分配和释放的函数
摘要:1. malloc,calloc,realloc,free属于C函数库,而new/delete则是C++函数库; 2. 多个-alloc的比较: alloc:唯一在栈上申请内存的,无需释放; malloc:在堆上申请内存,最常用; calloc:malloc+初始化为0; realloc:将原本申请 阅读全文
posted @ 2017-08-01 19:36 王小东大将军 阅读(334) 评论(0) 推荐(0)
18 比较数组找出最大两个数
摘要:在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行(9)次比较: 阅读全文
posted @ 2017-08-01 19:26 王小东大将军 阅读(253) 评论(0) 推荐(0)
17 稀疏矩阵转置
摘要:已知一稀疏矩阵的三组元表为:(1,2,3),(1,6,1),(3,1,5)(3,2,-1),(5,4,5)(5,1,-3),则其转置矩阵的三元组表中第3个三元组为() 分析: 原始的 1,2,3 1,6,1 3,1,5 3,2,-1 5,4,5 5,1,-3 转置之后相当于交换xy之后再存储 2, 阅读全文
posted @ 2017-08-01 17:22 王小东大将军 阅读(162) 评论(0) 推荐(0)
16 extern用法、常量字符串的应用
摘要:extern声明多文件共享变量的方法总结一下: 1).在一个源文件中定义,在其他需要使用的源文件中用extern声明。(仅一处定义,多处extern) 2).在一个源文件中定义,在其对应的头文件中extern声明,在其他需要使用该共享变量的源文件中包含该头文件即可。(更加标准的做法) 在gcc编译器 阅读全文
posted @ 2017-08-01 16:53 王小东大将军 阅读(175) 评论(0) 推荐(0)
15 int *ptr= (int *)(&a+1)跨了整个数组长度
摘要:分析以下程序,输出结果 2,5 分析: a 代表的是int * 每次步长为一个int; &a 代表的是 int[]* 每次步长为所指向的数组的大小。(&a是数组指针,其类型是int(*)[5]) 故 ptr 指向的是数组a最后一个元素的下一个元素 所以ptr-1指向的是数组a的最后一个元素 *(a+ 阅读全文
posted @ 2017-08-01 16:47 王小东大将军 阅读(342) 评论(0) 推荐(0)
14 printf输出格式及栈空间分配
摘要:假设在一个32位的 little endian的机器上运行下面程序,输出结果:1 0 2 分析: 1 printf()是一个库函数,C,C++中函数的参数是从右往左入栈的; 2 栈的生长方向是从高往低的 3 小端模式是低位存储在低字节 4 %d格式输出的是4个字节大小,而long long为8个字节 阅读全文
posted @ 2017-08-01 16:24 王小东大将军 阅读(798) 评论(0) 推荐(0)