剑指Offer
@SmartSi
Stay Hungry, Stay Foolish
展开
-
[华为机试练习题]15.删除重复字符/删除重复字符串
题目题目标题:删除重复字符给定一个字符串,将字符串中所有和前面重复多余的字符删除,其余字符保留,输出处理后的字符串。需要保证字符出现的先后顺序,并且区分大小写。详细描述:接口说明原型:int GetResult(const char *input, char *output)输入参数: input 输入的字符串输出参数(需考虑指针指向的内存区域是否有效): ou原创 2015-06-30 10:40:06 · 3700 阅读 · 2 评论 -
[华为机试练习题]16.数字统计
题目题目标题:对输入的整型数组,输出数组元素中的最大值、最大值的个数、最小值和最小值的个数详细描述:接口说明原型:voidOutputMaxAndMin(int * pInputInteger,intInputNum,int * pMaxValue,int * pMaxNum,int * pMinValue,int * pMinNum);输入参数: Int * pInputInteg原创 2015-06-30 11:00:56 · 3593 阅读 · 3 评论 -
[华为机试练习题]18.矩阵相乘
题目描述: 题目描述: 矩阵相乘 输入:两个N*N阶矩阵相乘 输出:结果矩阵 样例输入: {1, 2, 3}, {4, 5, 6}, {7, 8, 9} {1, 2, 3}, {4, 5, 6}, {7, 8, 9} 样例输出: {30, 36, 42}, {66, 81, 96}, {102, 126, 150}接口说明:原型: int matrix(int **MatrixA原创 2015-06-30 12:34:40 · 2641 阅读 · 0 评论 -
[华为机试练习题]19.字符串最后一个单词的长度
题目代码/*---------------------------------------* 日期:2015-06-30* 作者:SJF0115* 题目:字符串最后一个单词的长度* 来源:华为上机-----------------------------------------*/#include <iostream>#include <string>#include原创 2015-06-30 15:11:43 · 2124 阅读 · 0 评论 -
[华为机试练习题]14.整数分隔
题目描述: 一个整数总可以拆分为2的幂的和,例如:7=1+2+47=1+2+2+27=1+1+1+47=1+1+1+2+27=1+1+1+1+1+27=1+1+1+1+1+1+1总共有六种不同的拆分方式。再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。用f(n)表示n的不同拆分的种数,例如f(7)=6.要求编写程序,原创 2015-06-30 10:06:34 · 2379 阅读 · 0 评论 -
[华为机试练习题]27.渊子赛马
题目描述: 题目描述赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为“战国时期”。在魏国作官的孙膑,因为受到同僚庞涓的迫害,被齐国使臣救出后,到达齐国国都。 赛马是当时最受齐国贵族欢迎的娱乐项目。上至国王,下到大臣,常常以赛马取乐,并以重金赌输赢。田忌多次与国王及其他大臣赌输赢,屡赌屡输。一天他赛马又输了,回家后闷闷不乐。孙膑安慰他说:“下次有机会带我到马场看看,也许我能原创 2015-07-01 11:24:19 · 2668 阅读 · 0 评论 -
[华为机试练习题]29.Arrange an Array to Form a Smallest Digit
题目描述: Question: Input an array of positive integers, arrange the integers to form new digits, and output the smallest digit among all the new ones. Input Example 1: {2, 1}Output Example 1:12Input Exam原创 2015-07-01 15:28:34 · 1845 阅读 · 1 评论 -
[华为机试练习题]22.N皇后
题目皇后是国际象棋中威力最大的棋子。在下面所示的棋盘上,皇后可以攻击位于箭头所覆盖位置的所有棋子。我们能不能把N个皇后放在棋盘(N×N)上,它们中的任何一个都无法攻击其余的皇后?请编写程序找出一共有几种方法。详细描述:接口说明原型:intPlaceQueenMethodNum(int n);输入参数: int n: 皇后的个数返回值: int: 放置n皇后方案的个数原创 2015-06-30 18:27:23 · 2160 阅读 · 0 评论 -
[华为机试练习题]31.密码验证合格程序
题目描述: 密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复说明:长度超过2的子串题目类别: 字符串,数组 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 一组或多组长度超过2的子符串。每组占一行输出: 如果符合要求输出:OK,否则输出NG每行输出对应一组输入的原创 2015-07-01 16:36:21 · 2279 阅读 · 0 评论 -
[华为机试练习题]23.修改字符串
题目描述: 将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母(z变为a),大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字母。例如字符串”ATRcccert893#45ae”经过处理后应该为”ATRdert893#45ae”详细描述:接口说明原型:int ChangeString(char *pInStr,char原创 2015-06-30 21:38:35 · 2091 阅读 · 0 评论 -
[华为机试练习题]25.圆桌游戏
题目描述: 详细描述:N个人围坐在一个圆桌上,顺时针报数,报数的初始值为第一个人设置。当有成员报出的数字为7的倍数或数字中包含7,则该人退出圆桌,而后由下一个人开始重新继续该游戏。实现以下接口: 1、设定输入原始的圆桌游戏的人数。以最先开始报数的人编号为1,顺时针排序。 2、设定第一个人的初始值,获取按照规则退出圆桌的人的编号。 3、结束游戏。样例:比如初始化为4人的游戏:第1轮初始值为原创 2015-07-01 10:12:18 · 3263 阅读 · 0 评论 -
[华为机试练习题]21.二维数组的列排序
题目描述: 给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序,如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列。如果第i列到最后一列都相同,则按原序排列。 实现以下接口:输入一个m*n 的整数数组,实现按规则排列,返回排列后的数组。调用者会保证:比如输入数组为: 1,2,32,3,42,3,11,原创 2015-06-30 17:25:24 · 3268 阅读 · 1 评论 -
[华为机试练习题]26.铁路栈问题
题目描述: 题目标题:铁路栈问题 铁路的调度站如下:火车编号为:1~9,且不重复。如:编号分别为“1”、“2”、“3”、“4”、“5”的5个火车顺序进站,那么进站序列为“12345”,全部进站后再顺序出站,则出站序列为“54321”,如果先进1,2,然后2出站,然后1出站,然后再3进站、出站,4进站、出站,5进站、出站,那么出站序列就为21345.详细描述: int JudgeTrainSeq原创 2015-07-01 10:58:36 · 3551 阅读 · 0 评论 -
[华为机试练习题]28.报数
题目描述: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号。题目类别: 数组,指针 难度: 初级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 使用标准输入stdio.多行,每行一组数据。输出: 多行,每行对应求和结果。样例输入: 3样例输出: 2代码/*--原创 2015-07-01 11:45:38 · 2561 阅读 · 0 评论 -
[华为机试练习题]20.Home+Work
题目描述: 题目描述临近开学了,小C才想起来数学老师布置了暑假作业。暑假作业是很多张试卷,每张试卷所需的时间和获取的价值已知,请你帮他安排一下,用他仅剩的一点时间来做最有价值的作业。接口说明原型:int GetMaxValue(int nPapers, int nRemain, int paper[][2], double* pMaxValue) 输入参数:int nPaper原创 2015-06-30 16:40:46 · 2843 阅读 · 0 评论 -
[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
题目描述: 题目描述:输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排。要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut);【输入】 pstrIn:输入一个不带头节点的单向链表【输出】 pstrOut:删除内容重复的节点(重复的节点全部原创 2015-07-01 08:48:44 · 2314 阅读 · 0 评论 -
[华为机试练习题]33.二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列题目类别: 树 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行原创 2015-07-01 22:10:22 · 2227 阅读 · 0 评论 -
[华为机试练习题]39.尼科彻斯定理
题目描述: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如:1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 题目类别: 循环 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 整数m(取值范围:1~100)输出: 尼科彻斯定理成立,输出m个连续奇数(格式:“7+9+11”原创 2015-07-02 21:15:55 · 2083 阅读 · 0 评论 -
[华为机试练习题]41.取给定正整数的指定bit位开始的指定长度的数据
题目描述: 接口说明原型:unsigned int GetBitsValue(unsigned int input, unsigned int startbit, unsigned int bitlen)输入参数: input 输入的整数 startbit 需要获取的开始bit bitlen 需要获取的bit长度输出参数(指针指向的内存区域保证有效)原创 2015-07-02 23:46:15 · 2048 阅读 · 2 评论 -
[华为机试练习题]34.识别有效的IP地址和掩码并进行分类统计
题目描述: 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255; B类地址128.0.0.0~191.255.255.255; C类地址192.0.0.0~223.255.255.255; D类地址224.0.0.0~239.255.255.原创 2015-07-02 09:49:30 · 5677 阅读 · 5 评论 -
[华为机试练习题]40.求车速
题目描述: 一辆以固定速度行驶的汽车,司机在上午10点看到里程表(里程表有6位)上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的,例如95859公里)。两小时后里程表上出现了一个新的对称数。问该车的速度(公里/小时)是多少?接口说明原型:int CalcSpeedOfCar(int iCurrentMileage, int * piCarSpeed);输入参数:int pcCu原创 2015-07-02 21:56:48 · 3465 阅读 · 0 评论 -
[华为机试练习题]32.数字基root
题目描述: 求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复;题目类别: 数组 难度: 初级 运行时间限制: 10Sec内存限制: 128MByte阶段: 入职前练习 输入: 输入任意一个或多个整数输出: 输出各位数字之和,直到和为个位数为止(输入异常,则返回-1)多行,每行对应一个输入数据的结果。样例输入: 25865样例输原创 2015-07-01 21:09:24 · 2087 阅读 · 0 评论 -
[华为机试练习题]38.名字的漂亮度
题目描述: 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。题目类别: 字符串 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 整数N原创 2015-07-02 16:29:39 · 2867 阅读 · 0 评论 -
[华为机试练习题]36.简单错误记录
题目描述: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理: 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。题目类别: 字符串 难度: 中级 运行时间限制: 10Sec 内存限原创 2015-07-02 15:10:43 · 5684 阅读 · 4 评论 -
[华为机试练习题]42.求二叉树的深度和宽度
题目题目标题:求二叉树的宽度和深度给定一个二叉树,获取该二叉树的宽度和深度。 例如输入 a / \ b c/ \ / \d e f g返回3.接口说明 原型: int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)输入参数: head 需要获取原创 2015-07-03 15:23:08 · 2911 阅读 · 0 评论 -
[华为机试练习题]54.判断任意两台计算机的IP地址是否属于同一子网络
题目描述: 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。请看以下示例: 运算演示之一:IP地址:192.168.0.1子网掩码:255.255.255.0AND运算转化为二进制进行运算:I原创 2015-07-05 15:17:40 · 3427 阅读 · 2 评论 -
[华为机试练习题]49.向升序单向链表中插入一个节点
题目描述: 输入一个升序单向链表和一个链表节点,向单向链表中按升序插入这个节点。输入为空指针的情况视为异常,另外不考虑节点值相等的情况。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};详细描述:接口说明 原型:ListNode* InsertNodeToList(ListN原创 2015-07-04 11:24:48 · 2679 阅读 · 0 评论 -
[华为机试练习题]44.24点游戏算法
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利输入:4个1-10的数字。[数字允许重复,测试用例保证无异常数字]输出:True or False原创 2015-07-03 22:27:56 · 3285 阅读 · 0 评论 -
[华为机试练习题]47.整型反序
题目描述: 简要描述:给出一个不多于5位的整数, 进行反序处理 要求: 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123(仅数字间以空格间隔, 负号与数字之间不需要间隔) 例如: 输入: 12345 输出: 5 1 2 3 4 5原创 2015-07-03 23:38:13 · 3747 阅读 · 1 评论 -
[华为机试练习题]56.求子数组的最大和
题目描述: 输入一个整形数组。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。接口Int GetSubArraySum(Int* pIntArray,Int nCount);规格要求时间复杂度为O(n)举例例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的原创 2015-07-05 16:27:05 · 2063 阅读 · 0 评论 -
[华为机试练习题]37.合唱队
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1 < T2 <...... < Ti-1 < Ti >Ti+1 >......>TK。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列原创 2015-07-02 15:57:39 · 3650 阅读 · 0 评论 -
[华为机试练习题]43.在字符串中找出连续最长的数字串
题目描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!样例输入abcd12345ed125ss123058789abcd12345ss54761样例输出输出123原创 2015-07-03 16:10:19 · 3304 阅读 · 0 评论 -
[华为机试练习题]46.计算二进制数的0的个数
题目描述: 输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。题目类别: 位运算 难度: 初级 运行时间限制: 无限制内存限制: 无限制阶段: 入职前练习 输入: 要计算的十进制非负数输出: 二进制中第一个1之后0 的个数样例输入: 2样例输出: 1代码/*----------原创 2015-07-03 22:59:25 · 2251 阅读 · 0 评论 -
[华为机试练习题]48.阿姆斯特朗数
题目描述: 如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数),1除外,如407 = 43+03+73就是一个阿姆斯特朗数。试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数。接口说明 原型:int CalcArmstrongNumber(int n);输入参数:int n: n ≤ 65536返回值: n以内的阿姆斯特朗数的数量练习阶段:原创 2015-07-04 10:17:02 · 2407 阅读 · 0 评论 -
[华为机试练习题]51.数列求和
题目描述: 题目描述 编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘。1+1/2!+ .... +1/n!计算结果保存在double类型变量中。接口说明原型:void GetResult(int InputNum, double *NumResult);输入参数:Int InputNum:输入一个正整数,进行表达式计算char *NumRes原创 2015-07-04 12:36:54 · 2906 阅读 · 0 评论 -
[华为机试练习题]45.求某二进制数中1的个数
题目描述: 题目标题:求某二进制数中1的个数。给定一个unsigned int型的正整数,求其二进制表示中“1”的个数,要求算法的执行效率尽可能地高。详细描述:原型:int GetCount(unsigned int num)输入参数: num 给定的正整数输出参数(指针指向的内存区域保证有效):无返回值:返回1的个数举例:输入13,则对应的二进制是1101,那么1的个数为3个。则原创 2015-07-03 22:44:11 · 2462 阅读 · 0 评论 -
[华为机试练习题]52.Fibonacci数列的计算和转换
题目描述: 介绍:一、Fibonacci数列:1,1,2,3,5,8,13,15,28,…它们有这样的规律:第1和第2的数字都是1,第3个数字是前2个数字之和,第4个数字是第2,第3个数字之和。即Fn = F(n-1) + F(n-2).二、扩展Fibonacci数列:扩展Fibonacci数列,前2个数字可以任意输入,例如前2个数字为-1,1,那么后续的数字就是:0,1,1,2原创 2015-07-04 15:53:37 · 1592 阅读 · 0 评论 -
[华为机试练习题]50.求M的N次方的最后三位
题目描述: 正整数M 的N次方有可能是一个非常大的数字,我们只求该数字的最后三位例1:比如输入5和3 ,5的3次方为125,则输出为125 例2:比如输入2和10 2的10次方为1024 ,则输出结果为24例3:比如输入111和5 111的5次方为116850581551,则输出结果为551练习阶段: 初级 代码/*-------------------------------原创 2015-07-04 11:48:10 · 4417 阅读 · 0 评论 -
[华为机试练习题]30.计算整数的位数
题目描述: 输入一个五位以内(包括5位)的正整数,(1)判断它是一个几位数;(2)逆序输出其各位数字。题目类别: 位运算 难度: 初级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 多组数据,每组一行输出: 对应一行输出样例输入: 56439 样例输出: 5 93465代码/*----原创 2015-07-01 15:58:50 · 2845 阅读 · 2 评论 -
[华为机试练习题]53.整数相除(AC 但还有bug)
Char *pResult的空间由调用者提供,结果中最多保存十位整数,五位小数,整数部分超出十位,返回失败;小数部分超出五位,四舍五入; 存储结果以字符串形式显示,整数和小数部分需加上小数点。如结果为2.05,则输出的结果为”2.05”。原创 2015-07-04 16:50:34 · 1961 阅读 · 0 评论