C++面试总结
文章平均质量分 56
C++面试的基础知识的详细介绍,剑指Offer课后题,华为机试题以及经典算法问题的详尽解答。
究极死胖兽
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【华为练习题】求麻将清一色和牌问题
【华为练习题】求麻将清一色和牌问题题目题目描述:清一色是麻将番种之一,指由一种花色的序数牌组成的和牌.数字1-9,每个数字最多有4张牌我们不考虑具体花色,我们只看数字组合。刻子:三张一样的牌;如: 111, 222, 333, …, 999顺子:三张连续的牌;如: 123, 234, 345, …, 789对子:两张相同的牌;如: 11, 22, 33, …, 99需要实现一个程...原创 2019-02-14 16:04:17 · 8029 阅读 · 0 评论 -
【程序员面试金典】链表分割
【程序员面试金典】链表分割题目编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。分析头结点可能小于x也可能大于等于x,也有可能出现链表中所有结点都小于x或大于等于x的情况。为了减少各种特殊情况的判断,可以创建两个新的链表,分别存放小于x原创 2016-11-16 11:55:45 · 720 阅读 · 0 评论 -
【程序员面试金典】访问单个节点的删除
【程序员面试金典】访问单个节点的删除题目实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true分析复制下一个结点的内容到当前结点,再删除下一个结点,如果该节点为尾结点,则无解。解答struct ListNode { int val; struct ListNode *next;原创 2016-10-10 13:41:21 · 650 阅读 · 0 评论 -
【程序员面试金典】链表中倒数第k个结点
【程序员面试金典】链表中倒数第k个结点题目输入一个链表,输出该链表中倒数第k个结点。分析使用两个指针,前面的指针先移动k步,再同时移动两个指针,但前面的指针抵达表尾时输出后面的指针。注意链表为空或链表长度小于k的情况。解答struct ListNode { int val; struct ListNode *next; ListNode(int x) :原创 2016-10-10 13:37:43 · 557 阅读 · 0 评论 -
【程序员面试金典】翻转子串
【程序员面试金典】翻转子串题目假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。 测试样例: “Hello wor原创 2016-10-10 13:32:38 · 616 阅读 · 0 评论 -
【程序员面试金典】清除行列
【程序员面试金典】清除行列题目请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int[][](C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。测试样例: [[1,2,3],[0,1,2],[0,0,1]] 返回:[[0,0,3],[0,0,0]原创 2016-10-06 19:50:25 · 895 阅读 · 0 评论 -
【程序员面试金典】像素翻转
【程序员面试金典】像素翻转题目有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5原创 2016-09-27 13:55:35 · 1066 阅读 · 0 评论 -
【程序员面试金典】基本字符串压缩
【程序员面试金典】基本字符串压缩题目利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。 测试样例原创 2016-09-27 13:50:47 · 1653 阅读 · 0 评论 -
【程序员面试金典】空格替换
【程序员面试金典】空格替换题目题目描述请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。 测试样例: “Mr John Smith”,13 返回:”Mr原创 2016-09-27 13:48:10 · 930 阅读 · 0 评论 -
【程序员面试金典】确定两串乱序同构
【程序员面试金典】确定两串乱序同构题目给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。 测试样例: “This is nowcoder”,”is Thi原创 2016-09-24 15:56:27 · 947 阅读 · 0 评论 -
【程序员面试金典】原串翻转
【程序员面试金典】原串翻转题目请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。 测试样例: “This is nowcoder” 返回:”redocwon si sihT”解答 string reverseStri原创 2016-09-24 15:52:30 · 957 阅读 · 0 评论 -
【程序员面试金典】确定字符串互异
【程序员面试金典】确定字符串互异题目请实现一个算法,确定一个字符串的所有字符是否全都不同。(进阶:要求不允许使用额外的存储结构)给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。 测试样例: “aeiou” 返回:True “BarackObama”原创 2016-09-24 15:40:20 · 1026 阅读 · 0 评论 -
【华为练习题】二叉树遍历
【华为练习题】二叉树遍历题目二叉树遍历 描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确原创 2016-09-13 23:28:05 · 3439 阅读 · 0 评论 -
【华为练习题】整数分隔
【华为练习题】整数分隔题目整数分隔描述: 一个整数总可以拆分为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.要求编写原创 2016-09-13 17:06:36 · 716 阅读 · 0 评论 -
【华为练习题】识别IP地址与掩码(中级)
【华为练习题】识别IP地址与掩码(中级)题目识别有效的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.25原创 2016-09-13 16:42:49 · 964 阅读 · 0 评论 -
【华为练习题】大数阶乘
【华为练习题】大数阶乘题目计算阶乘n!是一件可怕的事情,因为当n并不是很大时,n!将是一个很大的值。例如13! = 6227020800,已经超过了我们常用的unsigned int类型的取值范围。请设计一个程序,使其可以计算100以内的数的阶乘,结果用字符串的形式输出解答#include <iostream>#include <string>#include <vector>using na原创 2016-09-13 12:06:33 · 821 阅读 · 0 评论 -
【华为练习题】 闯迷宫(高级)
【华为练习题】 闯迷宫(高级)题目sun所在学校每年都要举行电脑节,今年电脑节有一个新的趣味比赛项目叫做闯迷宫。 sun的室友在帮电脑节设计迷宫,所以室友就请sun帮忙计算下走出迷宫的最少步数。 知道了最少步数就可以辅助控制比赛难度以及去掉一些没有路径到达终点的map。 比赛规则是:从原点(0,0)开始走到终点(n-1,n-1),只能上下左右4个方向走,只能在给定的矩阵里走。 运行时间限制:原创 2016-09-10 18:11:50 · 795 阅读 · 0 评论 -
【算法之美-经典问题】九宫格问题
【算法之美-经典问题】九宫格问题题目九宫格是一种古老的数学游戏,它要求在3X3的矩阵中,填入1-9这9个数字,并且横向、纵向、斜向上的3个数字之和皆相等。类似问题在数学上被称为幻方。现将九宫格推广到5X5,7X7等幻方问题。根据求解口诀““一居上行正中央,依次斜填切莫忘;上出框时向下放,右出框时向左放;排重便在下格填,右上排重一个样”。所谓一居上行正中央说的是1在第一行的正中,依次 斜填切莫忘说的是原创 2016-08-31 21:34:00 · 6161 阅读 · 1 评论 -
【华为练习题】乒乓球赛制
【华为练习题】乒乓球赛制题目国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。华华通过以下方式进行分析,首原创 2016-08-24 14:46:41 · 1594 阅读 · 0 评论 -
【华为练习题】判断点是否在三角形中
【华为练习题】判断点是否在三角形中题目一个二维坐标系中(100*100,每一维0~99),已知三角形三个顶点的坐标A、B、C,判断坐标系中的任意点:P,是否在三角形内(在三角形边上也认为在三角形内)请实现如下接口/* 功能:点是否在三角形内输入:三角形三顶点坐标:A、B、C,以及待确认的点:P输出:无返回:在三角形内返回true,否则返回false*/public static boolea原创 2016-08-24 13:49:21 · 1309 阅读 · 0 评论 -
【华为练习题】 爬梯问题
【华为练习题】 爬梯问题题目一个楼梯有N阶,从下往上走,一步可以走一阶,也可以走两阶,有多少种走法?例如3阶楼梯有3种走法:1、1、11、22、1输入样例:3返回值样例:3分析要爬上第N阶楼梯,有两种情况,从第N-1阶走一步或从第N-2阶走两步,得到递推式f(n)=f(n-1)+f(n-2)解答#include <iostream>using namespace std;int Stairs(in原创 2016-08-23 20:13:12 · 1386 阅读 · 0 评论 -
【华为练习题】字符出现频率
【华为练习题】字符出现频率题目描述:写出一个程序,输出基准字符串中统计指定字符出现的频率字符串仅包括英文大小写字母和空格、逗号、点号小数点后保留2位有效数字,第三位四舍五入举例:输入:wo shi, yi zhi.xiao xiao niao ‘ ’(空格) 输出:0.17接口说明:/* 功能: 输入的基准字符串中统计指定字符出现的频率 字符串仅包括英文大小写字原创 2016-08-23 20:05:04 · 903 阅读 · 0 评论 -
【华为练习题】十六进制字符串形式转为内存值形式
【华为练习题】十六进制字符串形式转为内存值形式题目功能:将十六进制字符串形式内容转为内存值形式(注:pBuffer的内存申请由调用者保证)输入:szHexText:十六进制字符串形式,如: “6566”输出:dataOutput,其中:内存值形式Buffer,即内存的{0x65, 0x66}返回:返回转换成功的buffer的有效字节数解答#include <iostream>#include <s原创 2016-08-23 14:01:28 · 1794 阅读 · 0 评论 -
【华为练习题】约瑟夫问题拓展
【华为练习题】约瑟夫问题拓展题目功能: 约瑟夫问题众所周知,原始的约瑟夫问题是这样的:有n个人,编号为1,2,…, n,站成一圈, 每次第m个将会被处决,直到只剩下一个人。约瑟夫通过给出m来决定赦免其中的一个人。 例如当n=6,m=5时,5,4,6,2,3将会被依次处决,而1将会幸免。假如有k个好人,和k个坏人,所有人站成一圈,前k个人是好人,后k个人是坏人, 编写程序计算一个最小的m,原创 2016-08-23 11:20:08 · 3857 阅读 · 0 评论 -
【华为练习题】用两个栈来模拟队列(中级)
【华为练习题】用两个栈来模拟队列(中级)题目栈的特点是后进先出,队列的特点是先进先出。所以,用两个栈S1和S2模拟一个队列时, 要求两个栈S1和S2的长度都是5。 要求实现以下函数: enQueue 将元素value插入队列,若入队列成功返回true,否则返回false deQueue 从队列中取出一个元素放入value,若出队列成功返回true,否则返回false。 isEmptyQue原创 2016-08-23 10:42:07 · 1717 阅读 · 0 评论 -
【华为练习题】 最后一个单词的长度(初级)
【华为练习题】 最后一个单词的长度(初级)题目描述: 计算字符串最后一个单词的长度,单词以空格隔开。题目类别: 字符串 输入: 一行字符串,长度小于128。 输出: 整数N,最后一个单词的长度。 样例输入: hello world 样例输出: 5解答#include <iostream>#include <string>using namespace std;int las原创 2016-08-22 22:28:14 · 674 阅读 · 0 评论 -
【华为练习题】 阿姆斯特朗数(初级)
【华为练习题】 阿姆斯特朗数(初级)题目如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数),1除外,如407 = 4^3+0^3+7^3就是一个阿姆斯特朗数。试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数。原型:int CalcArmstrongNumber(int n);输入参数:int n: n ≤ 65536返回值:n以内的阿姆斯特朗数的数量解答#in原创 2016-08-22 19:22:10 · 1486 阅读 · 0 评论 -
【华为练习题】 爱因斯坦阶梯(初级)
【华为练习题】 爱因斯坦阶梯(初级)题目述: 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶?分析一个数满足除以2余1,除以3余2,除以5余4,除以6余5,那么这个数为2,3,5,6的最小公倍数减一。解答直接解法#include原创 2016-08-22 19:07:34 · 1710 阅读 · 0 评论 -
【华为练习题】 求最大凸多边形(高级)
【华为练习题】 求最大凸多边形题目题目描述: 给定一些点,输出最大面积的凸边形。输出起始点为x轴最左边的点,按照顺时针方向输出,每个点必须是凸边形的顶点(不输出边上或凸边形内的点)。输入第一个数n为坐标点个数,后面依次为n个坐标点的坐标,横坐标在前,不同坐标点用‘;’隔开,相同坐标点的横纵坐标用‘,’隔开。 输入样例: 13;-4,1;-2,3;1,3;2,2;1,4;5,4;6,1;2,-原创 2016-08-22 17:26:27 · 4162 阅读 · 0 评论 -
【华为练习题 】 长寿的兔子
题目从前有一对长寿的兔子,他们每个月生出一对小兔子,第一个月新生产的兔子两个月就长大了,在第三个月初开始生他们的下一代小兔子,这样一代一代的生下去,不考虑兔子的寿命,求第n个月出生多少对小兔子简单示例:比如输入1,第一个月出生的兔子只有一对,所以输出为1 比如输入2,第二个月出生的兔子只有一对,所以输出为1 比如输出为3,则该月份有两对兔子出生,则输出为2要求:实现以下接口: 输入一个正整数,原创 2016-08-22 15:04:16 · 1114 阅读 · 0 评论 -
【华为练习题 】 字符串的最小周期(中级)
【华为练习题 】 字符串的最小周期(中级)题目如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)。字符串的长度小于等于100,由调用者保证。原型:int GetMinPeriod(char *inputstring);输入参数:char * inputstring:字符串返回值原创 2016-08-22 14:31:28 · 1050 阅读 · 0 评论 -
【华为练习题 】 n位水仙花数(初级)
【华为练习题 】 n位水仙花数(初级)题目水仙花数又称阿姆斯特朗数。水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)求输入的数字是否为水仙花数原创 2016-08-22 14:01:46 · 2851 阅读 · 0 评论 -
华为上机题汇总(二十二)
华为上机题汇总(二十二)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总二十二目录第一百零六题第一百零七题第一百零八题第一百零九题第一百一十题第一百一十一题第一百零六题106.去饭店吃饭 一个男人3元 一个女人2元 一个小孩1元 现输入总人数和总花费 #include <iostream>#include <vector>using n原创 2016-08-19 14:54:08 · 1085 阅读 · 0 评论 -
华为上机题汇总(二十一)
华为上机题汇总(二十)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总二十目录第一百零一题第一百零二题第一百零三题第一百零四题第一百零五题第一百零一题101.合唱队问题 问题描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2原创 2016-08-18 21:01:57 · 820 阅读 · 0 评论 -
华为上机题汇总(二十)
华为上机题汇总(二十)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总二十目录第九十六题第九十七题第九十八题第九十九题第一百题第九十六题96 . 给分数的循环节加括号 两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。 输入:1 3 输出:0.(3) 输入 1 7 输出 0.(142857)#include <iost原创 2016-08-18 17:32:29 · 2744 阅读 · 0 评论 -
华为上机题汇总(十九)
华为上机题汇总(十九)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总十九目录第九十一题第九十二题第九十三题第九十四题第九十五题第九十一题91.按照指定规则对输入的字符串进行处理。 详细描述: 将输入的两个字符串合并。 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。原创 2016-08-18 13:33:10 · 921 阅读 · 0 评论 -
华为上机题汇总(十八)
华为上机题汇总(十八)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总十八目录第八十六题第八十七题第八十八题第八十九题第九十题第八十六题86.合并输入的两个整形数组并去掉重复的数字按升序输出; 案例输入:3 1 2 5 -10 3 2 案例输出:-10 1 2 3 5#include <iostream>#include <vector>原创 2016-08-17 18:03:29 · 962 阅读 · 0 评论 -
华为上机题汇总(十七)
华为上机题汇总(十七)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总十七目录第八十一题第八十二题第八十三题第八十四题第八十五题第八十一题81.对一个二维的整数数组,对指定列进行升序排序,返回排列后的数组 例如: 3 2 2 6 3 3 4 1 1 2 1 3 3 4 6#include <iostream>u原创 2016-08-17 12:01:51 · 809 阅读 · 0 评论 -
华为上机题汇总(十六)
华为上机题汇总(十六)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总十六目录第七十六题第七十七题第七十八题第七十九题第八十题第七十六题消除类游戏很多,一般横、竖、斜有连续三个及以上相同就可以消除,为降低难度,本题只需要考虑一维的横消除即可, 即在给定的一组数字中(个,用例保证只有个),如果有连续三个及以上的数字相同,则将这些数字消除, 同时如果前原创 2016-08-16 16:17:47 · 1128 阅读 · 0 评论 -
华为上机题汇总(十五)
华为上机题汇总(十四)注:编译环境为Visual Studio 2012,答案仅供参考。目录华为上机题汇总十四目录第七十一题第七十二题第七十三题第七十四题第七十五题第七十一题71.渡口问题: 同类车辆先来先上,客车优于货车,客车上了4辆后才可以上货车,客车不足4辆可用货车补充。 客车为0,货车为1 输入:5 00101 输出:01324#include <iostre原创 2016-08-16 12:58:41 · 970 阅读 · 0 评论
分享