- 博客(126)
- 资源 (1)
- 收藏
- 关注
原创 合并两个排序的链表
合并两个排序的链表时间限制:1秒 空间限制:32768K 题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目分析(1)首先建立一个指向新链表头的指针pHead(2)然后声明一个始终指向新链表尾部的指针p(3)如果两个链表均不为空,则将p指向数值小的节点,然后p往后移动一个节点,同时,小的节点所在的链表...
2018-07-20 21:01:19
134
原创 二叉搜索树与双向链表
二叉搜索树与双向链表时间限制:1秒 空间限制:32768K题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题目分析下面给出一个二叉搜索树转换为双向链表的手工完成图。代码实现/*struct TreeNode { int val; struct TreeNode *l...
2018-07-20 16:49:58
223
原创 栈的压入弹出序列
栈的压入弹出序列时间限制:1秒 空间限制:32768K 题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题目分析...
2018-07-20 07:37:02
216
原创 二叉树的下一个节点
二叉树的下一个节点时间限制:1秒 空间限制:32768K 热度指数:87941题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题目分析该题分为三种情况,(1)树为空时,返回NULL(2)当前节点右子树不为空时,找到右子树的最左边的左叶子节点,如果没有则返回右...
2018-07-19 18:43:07
134
原创 数字在排序数组中出现的次数
数字在排序数组中出现次数时间限制:1秒 空间限制:32768K题目描述统计一个数字在排序数组中出现的次数题目分析本题只需要通过二分查找,找到数字在数组中的位置,然后前后遍历数组,计算出现的次数即可。(题目没有说明是升序还是降序,需自行判断)代码实现class Solution {public: int GetNumberO...
2018-07-19 16:08:34
257
原创 圆圈中最后剩下的数
圆圈中最后剩下的数时间限制:1秒 空间限制:32768K 热度指数:99914题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品...
2018-07-19 15:24:37
146
原创 把二叉树打印成多行
把二叉树打印成多行时间限制:1秒 空间限制:32768K题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。题目分析(1)首先定义一个二维int型vector,然后前序遍历二叉树,并返回当前节点的深度(2)将当前节点的值存入对应层的vector数组中(3)遍历完所有节点后,vector数组即为层次遍历的倒叙结果(4)将ve...
2018-07-19 10:54:09
176
原创 旋转字符串
旋转字符串时间限制:1秒 空间限制:32768K题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!题目分析对于题目...
2018-07-18 20:25:08
173
原创 链表中环的入口节点
链表中的入口节点时间限制:1秒 空间限制:32768K 题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。题目分析(1)首先判断链表是否有环,我们可以通过两个指针,以不同的速度遍历链表,如果最终两个指针相遇,则证明链表有环,如果遇到空指针,则链表无环。(2)如果有环,获取环上的节点数n(3)定义两个指针,一个先走n个节点,然后同时往前...
2018-07-18 19:57:24
218
原创 对称的二叉树
对称的二叉树时间限制:1秒 空间限制:32768K对称的二叉树 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。...
2018-07-18 10:58:02
263
1
原创 字符流中第一个不重复的字符
字符流中第一个不重复的字符 时间限制:1秒 空间限制:32768K 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。题目分析ASCII码表中...
2018-07-18 09:40:41
457
原创 调整数组顺序使奇数位位于偶数位前面
调整数组顺序使奇数位位于偶数位前面 时间限制:1秒 空间限制:32768K题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目分析 (1)从后往前遍历, (2)定义一个iEven和iOdd变量,分别记录当前遍历到的最...
2018-07-17 21:27:13
222
原创 旋转数组的最小数字
旋转数组的最小数字 时间限制:3秒 空间限制:32768K题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目分析 该题目采用...
2018-07-17 19:23:48
126
原创 两个链表的公共节点
两个链表的公共节点 时间限制:1秒 空间限制:32768K题目描述 输入两个链表,找出它们的第一个公共结点。题目分析 我们首先定义两个辅助栈,然后依次将两个链表的节点压入栈中,然后从栈顶再依次往下比较两个栈的元素,直到遇到第一个不相等的节点时,前一个节点就是两个链表的公共节点。代码实现class Solution {public: Lis...
2018-07-17 16:32:14
1181
原创 平衡二叉树
平衡二叉树 时间限制:1秒 空间限制:32768K题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。题目分析 我们可以通过后序遍历二叉树,每遍历到一个节点时判断该节点是不是平衡二叉树并记录它的深度,如果是的话则返回true,否则返回false。代码实现如下:代码实现class Solution {public: bool IsB...
2018-07-17 15:44:14
118
原创 连续子数组的最大和
连续子数组的最大和 时间限制:1秒 空间限制:32768K题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续...
2018-07-17 14:32:50
142
原创 矩形覆盖
矩形覆盖 时间限制:1秒 空间限制:32768K题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目分析 假设一个2*n的大矩形有f(n)种覆盖方法,现将f(n)分为两步来实现: (1)把第一个2*1矩形看作整体,有一种覆盖方法,后面的2*(n-1)有f(n-...
2018-07-17 11:10:38
138
原创 用两个栈实现队列
用两个栈实现队列 时间限制:1秒 空间限制:32768K 热度指数:251357题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题目分析 首先栈是先进后出,队列是先进先出,下面手动模拟一下一组操作。 “PSH3”,”POP”,”POP”,”PSH4”,”POP”,”PSH5”,”POP”,”POP”] ...
2018-07-17 09:10:11
203
原创 求1+2+...+n
求1+2+…+n 时间限制:1秒 空间限制:32768K 热度指数:103360题目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题目分析 可以通过定义一个n维的对象数组来实现n个数的加法,代码如下:代码实现class A{private: ...
2018-07-16 22:55:50
484
原创 构建乘积数组
变态跳台阶 时间限制:1秒 空间限制:32768K 热度指数:65371题目描述 给定一个数组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]。不能使用除法。题目分析 矩阵B可以看作下表每行的乘积。 ...
2018-07-16 21:09:05
111
原创 二叉树的镜像
二叉树的镜像 时间限制:1秒 空间限制:32768K 热度指数:157793题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 原二叉树和镜像二叉树如下: 8 / \ 6 10 / \ / \ 5 7 9 11 原二叉树 8 / \ ...
2018-07-16 14:51:08
183
原创 不用加减乘除做加法
不用加减乘除做加法 时间限制:1秒 空间限制:32768K 热度指数:64338题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题目分析 首先让我们回顾一下一个简单的加法计算步骤,计算77+155的结果: (1)我们将77和155各自对应的位相加,进位用括号表示,写到下一位上。 ...
2018-07-16 14:06:23
134
原创 二叉树的深度
二叉树的深度 时间限制:1秒 空间限制:32768K题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题目分析 首先给出一棵二叉树 T00_0 / \ T11_1 T22_2 / \ T33_...
2018-07-16 10:40:58
260
原创 第四章 输出文字
显示区域是被整个应用程式视窗中未被标题列、视窗边框,以及可选的功能表列、工具列、状态列和卷动列占据的部分。简而言之,显示区域是视窗中可以由程式任意书写和传递视觉资讯的部分。 在混合显示文字和图形时,Windows内定的字体的字元大小通常决定了图形的尺寸。 本章表面上是讨论绘图的方法,实际上是讨论与装置无关的程式设计基础。Windows程式只能对显示区域大小甚至字元的大小做很少的假...
2018-04-25 15:47:49
364
原创 第三章 视窗和讯息
1 自己的视窗1.1 总体结构 进入Windows程式设计,实际上是在进行一种物件导向的程式设计(OOP)。桌面上最明显的视窗就是应用程式视窗。这些视窗含有显示程式名称的标题列、功能表甚至可能还有工具列和卷动列。另一类视窗是对话方块,它可以有标题列也可以没有标题列。装饰对话方块表面的还有各式各样的按键、单选按钮、核取方块、清单方块、卷动列和文字输入区域。其中每一个小的视觉物件都是一个...
2018-04-24 08:52:42
456
原创 第二章 Unicode简介
1 字元集简史1.1 美国标准 美国资讯交换标准码(ASCII:American Standard Code For Information Interchange)起始于50年代后期,最后完成于1967年。最终的资源码就有26个小写字母、26个大写字母、10个数字、32个符号、33个代号和一个空格,总共128个字元码。 ASCII码表: 0- 1- 2-...
2018-04-22 17:19:10
369
原创 第一章 开始
使用本书的三个先决条件: 您应该从使用者的角度熟悉Windows; 您应了解C语言; 您应在机器上安装一个适合于开发Windows程序设计的编译器和开发环境。 1 Windows方面 Windows98和Windows NT都是支持32位元优先权式多工(preemptive multitasking)及多执行绪的图形作业系统。Windows拥有图形使用者界面(...
2018-04-20 21:06:31
184
原创 C++多线程
1 基本概念计算机进程: 在计算机操作系统中,进程是指当可执行文件运行时,系统所创建的内核对象。 计算机线程: 线程是计算机中最小的执行单元。 同步: 不同进程间的若干程序段,它们的运行必须严格按照规定的某种次序来运行,这种先后次序依赖于要完成的任务。如果用对资源的访问来定义的话,同步是指在互斥的基础上,通过其它机制实现访问者对资源的有序访问。 互斥: 散布在不同进程之间的若干程...
2018-04-19 12:08:06
312
原创 从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1、10、11和12,1一共出现了5次。 程序代码:#include <iostream>//#include <cmath>int GetTimesOfNumbers(int n){ int iDi...
2018-03-23 20:46:47
155
原创 最小的k个数
题目:输入n个整数,找出其中最小的k个数。例如输入4、5、1、6、2、7、3、8这8个字,则最小的4个数字是1、2、3、4。 程序代码:#include <iostream>void ShiftValue(int *pArray, int iNode, int iLength){ int iTmp = pArray[iNo...
2018-03-23 10:27:34
101
原创 二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉树的后序遍历结果。如果是则返回true,否则返回false。假如输入的数组的任意两个数字都互不相同。 程序代码:#include <iostream>#include <stding>#include <queue>// 函数名称:CreateBinaryTr...
2018-03-20 17:05:30
337
原创 从上往下打印二叉树
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 程序代码:#include <iostream>#include <string>#include <queue>struct BinaryTreeNode{ int data; BinaryTreeNode *leftC...
2018-03-20 17:00:50
156
原创 栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。 程序代码:#include <iostream>// 函数名称:I...
2018-03-20 11:06:59
187
原创 包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。 程序源码:#include &lt;iostream&gt;// 函数名称:InitListStack// 函数功能:初始化链栈// 输入参数:// lst:链栈头结点// 输出...
2018-03-20 10:16:42
139
原创 顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 4 5 6 7 89 10 11 12 则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。程序代码:#include <iostream>...
2018-03-19 22:20:10
110
原创 树的子结构
题目:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构。 程序代码:#include <iostream>struct BinaryTreeNode{ int data; BinaryTreeNode *leftChild; BinaryTreeNode *rightChild;};void ...
2018-03-19 14:42:24
124
原创 SendMessage与PostMessage的区别
SendMessage: This is function sends the specified message to a window or windows. SendMessage calls the window procedure for the specified window and does not return until the window proced...
2018-03-17 14:45:07
4073
原创 合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表的结点仍然是按照递增排序的。 程序源码如下:#include <iostream>struct ListNode{public: ListNode() { data = 0; } int data; ListNode *next;...
2018-03-17 10:02:13
262
转载 new和malloc的区别
最大的区别就是:new/delete 是运算符,malloc/free是函数 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,仅用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是...
2018-03-16 21:38:57
136
原创 反转链表
题目:定义一个函数,输入一个链表i的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下: struct ListNode { int iData; ListNode *pNext;};程序源码:#include &lt;iostream&gt;struct ListNode{ int i...
2018-03-14 20:03:15
123
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅