C++
hello-elena
这个作者很懒,什么都没留下…
展开
-
evaluate-reverse-polish-notation
题目描述Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are+,-,*,/. Each operand may be an integer or another expression.Some examples: ["2转载 2017-06-13 21:40:06 · 232 阅读 · 0 评论 -
两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。先分别遍历链表1和链表2的长度,设长度差为n。长的先走n步,再和短的一起走,得到两个链表的第一个公共节点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class原创 2017-05-03 20:41:39 · 279 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述在一个字符串(1第一遍扫描这个数组时,每碰到一个字符,在哈希表中找到对应的项并把出现的次数增加一次。字符(char)是一个长度为8的数据类型,总共有可能256 种可能。创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项,而数组中存储的是每个字符对应的次数。第一遍扫描这个数组时,每碰到一个字符,在哈希表中找到对应的项并把出现原创 2017-05-03 20:33:17 · 301 阅读 · 0 评论 -
丑数
题目描述把只包含素因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。class Solution {public: int Min(int number1,int number2,int number3) {原创 2017-05-03 19:57:46 · 461 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量原创 2017-05-03 17:40:47 · 229 阅读 · 0 评论 -
数组中出现次数大于一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。剑指offert书中给出答案比较简单,根据数组的特征来统计class Solution {public: int MoreThanHalfNum_S原创 2017-05-03 15:55:57 · 280 阅读 · 0 评论 -
二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL),原创 2017-05-03 20:49:00 · 300 阅读 · 0 评论 -
不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。class Solution {public: int Add(int num1, int num2) { int sum,temp; do{ sum = num1^num2; temp =原创 2017-05-03 21:33:29 · 246 阅读 · 0 评论 -
求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 res = n; res && (res += Sum_Solution(n - 1原创 2017-05-03 21:32:04 · 385 阅读 · 0 评论 -
孩子们的游戏
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去原创 2017-05-03 21:30:50 · 348 阅读 · 0 评论 -
扑克牌顺序
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12原创 2017-05-03 21:09:32 · 854 阅读 · 0 评论 -
平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。class Solution {public: int TreeDepth(TreeNode* pRoot){ if(pRoot==NULL) return 0; int left=TreeDepth(pRoot->left); int right=TreeDepth(pRoot原创 2017-05-03 20:53:42 · 224 阅读 · 0 评论 -
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)/*struct RandomListNode { int label; struct RandomListNode *next, *rando原创 2017-04-30 17:46:16 · 273 阅读 · 0 评论 -
矩形覆盖
矩形覆盖我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目看着很难的样纸,2*n的大矩形F(n)种方法,一定是由F(n-1)或者F(n-2)而来,F(n)=F(n-1)+F(n-2).class Solution {public: int rectCover(int num原创 2017-04-30 14:48:10 · 206 阅读 · 0 评论 -
变态跳台阶
变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。F(1)=1,F(2)=2,F(3)=F(2)+F(1)+1=4,F(4)=F(3)+F(2)+F(1)+1=8;F(n-1)=F(0)+F(1)+F(2)+....+F(n-2); (A)F(n)=F(0)+F(1)+F(2)+....+F(n原创 2017-04-30 14:39:51 · 179 阅读 · 0 评论 -
跳台阶
跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。和斐波那契数组一样F(0)=0,F(1)=1, F(2)=2, F(3)=3, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)class Solution {public: int jumpFloor(int number) {原创 2017-04-30 14:32:09 · 183 阅读 · 0 评论 -
菲波那契数列
菲波那契数列大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n对于斐波那契数列有公式:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)class Solution {public: int Fibonacci(int n) { int f1=1,f2=1,fn原创 2017-04-30 14:27:52 · 428 阅读 · 0 评论 -
从尾到头打印链表
从尾到头打印链表输入一个链表,从尾到头打印链表每个节点的值。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*///输入原创 2017-04-30 14:18:44 · 199 阅读 · 0 评论 -
二维数组的查找
牛客网剑指offer系列题目一二维数组的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。书上给的解法是选取最右上角的元素开始比较,但是否也可以从左下角开始比较?看到了这个vector V1[];vector> V2 ;cout原创 2017-04-29 10:54:30 · 262 阅读 · 0 评论 -
替换空格
剑指offer(2)请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public:void replaceSpace(char *str,int length) { if(length原创 2017-04-29 11:03:51 · 202 阅读 · 0 评论 -
重建二叉树
重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 class Solution { public: struct TreeNode* reConstru原创 2017-04-29 15:18:52 · 177 阅读 · 0 评论 -
旋转数组的最小数字
旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。class Solution {public: //寻找旋转数原创 2017-04-29 22:57:59 · 198 阅读 · 0 评论 -
二进制中一的个数
二进制中1的个数输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。对每一位进行与运算,注意若用n进行移位运算,当输入n为负数时候,为保证移动后依旧是负数,故移位后的最高位依旧为i,最后会导致变成0xFFFFFFFF而陷入死循环。正确解法如下:class Solution {public: int NumberOf1(int n) {原创 2017-04-30 15:03:52 · 313 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。考虑的几种情况:1. base和0的大小2.exponent是否为负数class Solution {public: bool isequal(double num1,double num2) { if(num1-n原创 2017-04-30 15:42:59 · 222 阅读 · 0 评论 -
包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。发现很多用java的代码很多比c++短,喵~实现几个函数的功能//新建一辅助栈,使得辅助栈从上到下存储的应该是最小值->次小值->次次小值……class Solution {public: stack dataStack, minStack; void push(int原创 2017-04-30 17:09:13 · 425 阅读 · 1 评论 -
二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7原创 2017-04-30 16:42:41 · 279 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/原创 2017-04-30 16:39:01 · 232 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。最简单的办法,定义一个新的链表,然后比较链表1和链表2的大小,取小的那个/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }}原创 2017-04-30 16:28:34 · 196 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode原创 2017-04-30 16:21:09 · 315 阅读 · 0 评论 -
链表中的倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。定义两个指针,前一个走k步后,两个开始一起走。前一个到达链表尾部时候,第一个便是倒数第k个节点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Sol原创 2017-04-30 16:06:27 · 240 阅读 · 0 评论 -
调整数组顺序使得奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。下面方法是先建立一个新的数组,顺序遍历数组,若是奇数,便放在新数组里面。第二次扫描时,再将偶数都放入。class Solution {public: void reOrderArray(原创 2017-04-30 16:03:10 · 230 阅读 · 0 评论 -
用两个栈实现队列
用两个栈实现队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: stack stack1; stack stack2; void push(int node) { stack1.push(node); } int pop() {原创 2017-04-29 15:48:25 · 199 阅读 · 0 评论