面试题
沐寒握冰
专注于实时音视频传输、拥塞控制算法及全链路QoS/QoE优化技术
展开
-
剑指Offer之面试题8:旋转数组中的最小数字
所有代码均通过G++编译器测试,仅为练手纪录。//面试题8:旋转数组中的最小数字//题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。// 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。// 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。//面试题8:旋转数组中的最小数原创 2016-12-24 12:25:00 · 407 阅读 · 0 评论 -
剑指Offer之面试题21:包含min函数的栈
所有代码均通过G++编译器测试,仅为练手纪录。//面试题21:包含min函数的栈//题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。// 在该栈中,调用min/push/pop的时间复杂度都是O(1)。//面试题21:包含min函数的栈//题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。//原创 2016-12-25 19:21:52 · 865 阅读 · 0 评论 -
剑指Offer之面试题22:栈的压入、弹出序列
所有代码均通过G++编译器测试,仅为练手纪录。//面试题22:栈的压入、弹出序列//题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。// 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,// 序列4,5,3,2,1是该压栈序列对应的一个弹出序列,// 序列4,3,5,1,原创 2016-12-25 19:23:38 · 552 阅读 · 0 评论 -
剑指Offer之面试题23:从上往下打印二叉树
所有代码均通过G++编译器测试,仅为练手纪录。//面试题23:从上往下打印二叉树//题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。//面试题23:从上往下打印二叉树//题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。void TreePrintBreadth(BinTreeNode *pRoot){原创 2016-12-25 19:25:07 · 533 阅读 · 0 评论 -
剑指Offer之面试题24:二叉搜索树的后序遍历序列
所有代码均通过G++编译器测试,仅为练手纪录。//面试题24:二叉搜索树的后序遍历序列//题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。// 如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。//面试题24:二叉搜索树的后序遍历序列//题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历原创 2016-12-25 19:26:20 · 423 阅读 · 0 评论 -
剑指Offer之面试题37:两个链表的第一个公共结点
所有代码均通过G++编译器测试,仅为练手纪录。//面试题37:两个链表的第一个公共结点//题目:输入两个链表,找出它们的第一个公共结点。//面试题37:两个链表的第一个公共结点//题目:输入两个链表,找出它们的第一个公共结点。int GetListLength(ListNode *pHead){ int nLength = 0; List原创 2017-01-07 21:22:30 · 618 阅读 · 0 评论 -
剑指Offer之面试题36:数组中的逆序对
所有代码均通过G++编译器测试,仅为练手纪录。//面试题36:数组中的逆序对//题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。// 输入一个数组,求出这个数组中的逆序对的总数。//面试题36:数组中的逆序对//题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。//原创 2017-01-07 21:20:59 · 603 阅读 · 0 评论 -
剑指Offer之面试题35:第一个只出现一次的字符
所有代码均通过G++编译器测试,仅为练手纪录。//面试题35:第一个只出现一次的字符。//题目:在字符串中找出第一个只出现一次的字符。// 如输入“abaccdeff”,则输出'b'。//面试题35:第一个只出现一次的字符。//题目:在字符串中找出第一个只出现一次的字符。// 如输入“abaccdeff”,则输出'b'。char F原创 2017-01-07 21:19:07 · 725 阅读 · 0 评论 -
剑指Offer之面试题34:丑数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题34:丑数//题目:我们把只包含因子2,3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。// 例如6,8都是丑数,但14不是,因为它包含因子7.习惯上我们把1当作第一个丑数。//面试题34:丑数//题目:我们把只包含因子2,3和5的数称作丑数(Ugly原创 2017-01-07 21:17:33 · 576 阅读 · 0 评论 -
剑指Offer之面试题33:把数组排成最小的数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题33:把数组排成最小的数//题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字中最小的一个。// 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.//面试题33:把数组排成最小的数//题目:输入一个正整数数组,把数组里所有数字原创 2017-01-07 21:16:00 · 555 阅读 · 0 评论 -
剑指Offer之面试题25:二叉树中和为某一值的路径
所有代码均通过G++编译器测试,仅为练手纪录。//面试题25:二叉树中和为某一值的路径//题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。// 从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。//面试题25:二叉树中和为某一值的路径//题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径原创 2017-01-07 21:00:10 · 689 阅读 · 0 评论 -
剑指Offer之面试题26:复杂链表的复制
所有代码均通过G++编译器测试,仅为练手纪录。//面试题26:复杂链表的复制//题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复制一个复杂链表。// 在复杂链表中,每个结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任意结点或者NULL。//面原创 2017-01-07 21:02:33 · 452 阅读 · 0 评论 -
剑指Offer之面试题32:从1到N整数1出现的次数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题32:从1到N整数1出现的次数//题目:输入一个整数N,求从1到N这N个整数的十进制表示中1出现的次数。// 例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。//面试题32:从1到N整数1出现的次数//题目:输入一个整数N,求从1到N这N个整数的十进制原创 2017-01-07 21:14:24 · 770 阅读 · 0 评论 -
剑指Offer之面试题31:连续子数组的最大和
所有代码均通过G++编译器测试,仅为练手纪录。//面试题31:连续子数组的最大和//题目:输入一个整型数组,数组里面有正数也有负数。数组中一个或连续的多个整数组成一个字数组。。// 求所有子数组的和的最大值。要求时间复杂度为O(n)。//面试题31:连续子数组的最大和//题目:输入一个整型数组,数组里面有正数也有负数。数组中一个或连续的多个整数组原创 2017-01-07 21:12:21 · 450 阅读 · 0 评论 -
剑指Offer之面试题30:最小的K个数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题30:最小的K个数//题目:输入N个整数,找出其中最小的K个数。// 例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4.//面试题30:最小的K个数//题目:输入N个整数,找出其中最小的K个数。// 例如输入4,5,1,6,2,7,3,8这8个数字原创 2017-01-07 21:10:56 · 600 阅读 · 0 评论 -
剑指Offer之面试题28:字符串的排序
所有代码均通过G++编译器测试,仅为练手纪录。//面试题28:字符串的排序//题目:输入一个字符串,打印出该字符串中字符的所有排列。// 例如输入字符串“ abc”,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bca,cab和cba。//面试题28:字符串的排序//题目:输入一个字符串,打印出该字符串中字符的所有排列。//原创 2017-01-07 21:06:17 · 533 阅读 · 0 评论 -
剑指Offer之面试题27:二叉搜索树与双向链表
所有代码均通过G++编译器测试,仅为练手纪录。//面试题27:二叉搜索树与双向链表//题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。// 要求不能创建任何新的结点,只能调整树中结点指针的方向。//面试题27:二叉搜索树与双向链表//题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。// 要求不能创建任原创 2017-01-07 21:04:22 · 477 阅读 · 0 评论 -
剑指Offer之面试题20:顺时针打印矩阵
所有代码均通过G++编译器测试,仅为练手纪录。//面试题20:顺时针打印矩阵//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。//面试题20:顺时针打印矩阵//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。void PrintMatrixCircle(int **ppNum,int nRow,int nCol,int原创 2016-12-25 19:20:27 · 511 阅读 · 0 评论 -
剑指Offer之面试题19:二叉树的镜像
所有代码均通过G++编译器测试,仅为练手纪录。//面试题19:二叉树的镜像//题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。//面试题19:二叉树的镜像//题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。void TreeMirror(BinTreeNode *pRoot){ if(NULL == pRoot) {原创 2016-12-25 19:18:37 · 431 阅读 · 0 评论 -
剑指Offer之面试题18:树的子结构
所有代码均通过G++编译器测试,仅为练手纪录。//面试题18:树的子结构//题目:输入两棵二叉树A和B,判断B是不是A的子结构。//面试题18:树的子结构//题目:输入两棵二叉树A和B,判断B是不是A的子结构。bool TreeCompre(BinTreeNode *pRootTree,BinTreeNode *pSubTree){ if(NULL原创 2016-12-25 19:17:07 · 499 阅读 · 0 评论 -
剑指Offer之面试题9:斐波那契数列
所有代码均通过G++编译器测试,仅为练手纪录。// 面试题9:斐波那契数列//题目一:写一个函数,输入n,求斐波那契(Fibonacci)数列的第N项。斐波那契数列的定义如下:// F(0) = 0;// F(1) = 1;// F(n) = F(n-1)+F(n-2)(n>1);// 面试题9:斐波那契数列//题目一:写原创 2016-12-24 12:27:35 · 557 阅读 · 0 评论 -
剑指Offer之面试题10:二进制中1的个数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题10:二进制中1的个数//题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。// 例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2.//面试题10:二进制中1的个数//题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。// 例如把9原创 2016-12-24 12:29:34 · 447 阅读 · 0 评论 -
剑指Offer之面试题1:赋值运算符函数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题1:赋值运算符函数//题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData =NULL); CMyString(constCMyString& str); ~CMySt原创 2016-12-24 00:35:55 · 377 阅读 · 0 评论 -
剑指Offer之面试题2:实现Singleton
所有代码均通过G++编译器测试,仅为练手纪录。//面试题2:实现Singleton//题目:设计一个类,我们只能生成该类的一个实例//面试题2:实现Singleton//题目:设计一个类,我们只能生成该类的一个实例templateclass CSingleton{public: T& GetInstance() { //是否原创 2016-12-24 00:38:37 · 406 阅读 · 0 评论 -
剑指Offer之面试题4:替换空格
所有代码均通过G++编译器测试,仅为练手纪录。//面试题4:替换空格//题目:请实现一个函数,把字符串中的每个空格替换成“%20”.// 例如输入“We are happy.”,则输出“We%20are%20happy.”//面试题4:替换空格//题目:请实现一个函数,把字符串中的每个空格替换成“%20”.// 例如输入“We are ha原创 2016-12-24 00:43:26 · 403 阅读 · 0 评论 -
剑指Offer之面试题7:用两个栈实现队列
所有代码均通过G++编译器测试,仅为练手纪录。//面试题7:用两个栈实现队列//题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,// 分别完成在队列尾部插入结点和在队列头部删除结点的功能。//面试题7:用两个栈实现队列//题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数append原创 2016-12-24 00:54:21 · 372 阅读 · 0 评论 -
剑指Offer之面试题6:重建二叉树
所有代码均通过G++编译器测试,仅为练手纪录。//面试题6:重建二叉树//题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。// 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。//面试题6:重建二叉树//题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。// 假设输入的前序遍历和中序遍历的结果中都不含重复原创 2016-12-24 00:52:11 · 402 阅读 · 0 评论 -
剑指Offer之面试题5:从尾到头打印链表
所有代码均通过G++编译器测试,仅为练手纪录。//面试题5:从尾到头打印链表//输入一个链表的头结点,从尾到头反过来打印每个结点的值。//面试题5:从尾到头打印链表//输入一个链表的头结点,从尾到头反过来打印每个结点的值。struct ListNode{ int m_nValue; ListNode* m_pNext; public原创 2016-12-24 00:50:02 · 475 阅读 · 0 评论 -
剑指Offer之面试题3:二维数组中的查找
所有代码均通过G++编译器测试,仅为练手纪录。//面试题3:二维数组中的查找//题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列。// 请完成一个函数,输入这样的一个二位数组和一个整数,判断数组中是否含有该整数。//面试题3:二维数组中的查找//题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序原创 2016-12-24 00:41:28 · 464 阅读 · 0 评论 -
剑指Offer之面试题11:数值的整数次方
//面试题11:数值的整数次方//题目:实现函数double Power(double base,int exponent),求base的exponent次方。// 不得使用库函数,同时不需要考虑大数问题//面试题11:数值的整数次方//题目:实现函数double Power(double base,int exponent),求base的exponent次方。//原创 2016-12-24 21:58:34 · 377 阅读 · 0 评论 -
剑指Offer之面试题12:打印1到最大的N位数
所有代码均通过G++编译器测试,仅为练手纪录。//面试题12:打印1到最大的N位数//题目:输入数字N,按顺序打印出从1到最大的N位十进制数。比如输入3,则打印出1,2,3一直到最大的三位数即999。//面试题12:打印1到最大的N位数//题目:输入数字N,按顺序打印出从1到最大的N位十进制数。比如输入3,则打印出1,2,3一直到最大的三位数即999。void原创 2016-12-24 22:00:40 · 679 阅读 · 0 评论 -
剑指Offer之面试题13:在O(1)时间删除链表结点
所有代码均通过G++编译器测试,仅为练手纪录。//面试题13:在O(1)时间删除链表结点//题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。//面试题13:在O(1)时间删除链表结点//题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。struct ListNode{ int m_nValu原创 2016-12-24 22:02:30 · 463 阅读 · 3 评论 -
剑指Offer之面试题14:调整数组顺序使奇数位于偶数前面
所有代码均通过G++编译器测试,仅为练手纪录。//面试题14:调整数组顺序使奇数位于偶数前面//题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,// 使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。//面试题14:调整数组顺序使奇数位于偶数前面//题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,// 使原创 2016-12-24 22:04:09 · 373 阅读 · 0 评论 -
剑指Offer之面试题15:链表中倒数第K个结点
所有代码均通过G++编译器测试,仅为练手纪录。//面试题15:链表中倒数第K个结点//题目:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。//例如一个链表有6个结点,从头结点开始它们的值依次是1,2,3,4,5,6.这个链表的倒数第3个结点是值为4的结点//面试题15:链表中倒数第K个结点/原创 2016-12-25 19:12:28 · 549 阅读 · 0 评论 -
剑指Offer之面试题16:反转链表
所有代码均通过G++编译器测试,仅为练手纪录。//面试题16:反转链表//题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。//面试题16:反转链表//题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。ListNode *ListReverse(ListNode *pHead){ if (NUL原创 2016-12-25 19:14:06 · 458 阅读 · 0 评论 -
剑指Offer之面试题17:合并两个排序的链表
所有代码均通过G++编译器测试,仅为练手纪录。//面试题17:合并两个排序的链表//题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。//例如链表1{1,3,5,7}和链表2{2,4,6,8},则合并之后的升序链表如链表3{1,2,3,4,5,6,7,8}.//面试题17:合并两个排序的链表//题目:输入两个递增排序的链表,合原创 2016-12-25 19:15:33 · 465 阅读 · 0 评论 -
剑指Offer之面试题29:数组中出现次数超过一半的数字
所有代码均通过G++编译器测试,仅为练手纪录。//面试题29:数组中出现次数超过一半的数字//题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。// 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.//面试题29:数组中出现次数超过一半的数字//题目原创 2017-01-07 21:09:12 · 465 阅读 · 0 评论