面试
文章平均质量分 61
Bingo_12345
这个作者很懒,什么都没留下…
展开
-
整数中1出现的次数(从1到n整数中1出现的次数)
题目描述整数中1出现的次数(从1到n整数中1出现的次数)思路一:将每个数转换成字符串,逐个数逐位比较。(较费时费劲)代码: int NumberOf1Between1AndN_Solution(int n) { int count = 0; char a[10]; Stringstream s原创 2015-09-08 17:09:33 · 269 阅读 · 0 评论 -
字符串的排列(全排列,包含重复的字符)
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 void Per(int begin,string &str,vect原创 2015-09-07 17:07:04 · 2395 阅读 · 0 评论 -
最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。基本方法:思路一:在K个数的数组中多次排序,每次替换掉最大的,直到原数组中的数比较完;代码: vector GetLeastNumbers_Solution(vector input, int k) { in原创 2015-09-08 10:34:06 · 337 阅读 · 0 评论 -
复杂链表的复制(结点包含随机指针)
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。思路:1、在原链表上面复制,新节点连到相同的老结点后面;2、复制随机指针,老结点的随机指针(老结点后面的结点的随机指针指向,老结点随机指针所指节点的下一个结点)3、将两个链表分离,返回头指针;代码如下: RandomList原创 2015-09-07 13:29:11 · 819 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:1、节点为空,直接返回2、节点不为空,把节点的数值压入路径中,如果节点的值等于路径剩余的值且是叶子节点,把该路径加入到路径集合中,并把路径中的该节点弹出;否则遍历左子树右子树(剩余的值为上一层值减去本节点的值),最原创 2015-09-06 20:26:31 · 479 阅读 · 0 评论 -
栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。思路:1、栈空时,压入一个;2、弹出序列第一个元素与栈顶元素比较,相同,则弹出一个,不相同再压入原创 2015-09-06 14:19:09 · 452 阅读 · 0 评论 -
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路如下:后续遍历要求左子树大于根大于右子树,数组前半段小于最后一个元素,后半段大于最后一个元素,否则返回false;递归,检查所有子树(数组为空时返回false,递归前先检测子树是不是空)代码如下: boo原创 2015-09-06 15:27:43 · 3285 阅读 · 0 评论 -
const char* p,char const * p,char * const p 的区别
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to转载 2015-09-04 21:54:01 · 478 阅读 · 0 评论 -
输入两颗二叉树A,B,判断B是不是A的子结构。(树中可能有重复的值)
题目描述输入两颗二叉树A,B,判断B是不是A的子结构。步骤:本节点是不是与子树根节点相同,是:分别比较左右节点,否:本节点的左右子节点是否与子树根节点相同;最后没有找到相同的,返回false代码: bool BeOne(TreeNode* pRoot1,TreeNode* pRoot2){ if(pRoot2 ==NULL)原创 2015-09-06 10:08:23 · 988 阅读 · 0 评论 -
将矩阵顺时针打印出来
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路一:先搞清楚打印圈数,int cir = (Math.min(Row,Col) - 1)/2 + 1;再原创 2015-09-06 11:24:16 · 354 阅读 · 0 评论 -
C++ 华为 合唱队
描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1Ti+1>......>TK。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出原创 2015-09-09 22:13:26 · 1484 阅读 · 1 评论 -
数组中只出现一次的数字(异或方法)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:使用异或,但是与在成对出现的数字中查找一个单独的数字不同的是需要利用异或结果的最低位为1的flag将数组中的数字分为两类,一类是与flag按位与为0,另一类为不为0,这样再分别异或一次就能够找出这两个数。很是巧妙。其中有一个语法上容易忽略的坑:==的优先级比&高,所以&时需要加原创 2015-09-13 17:34:46 · 485 阅读 · 0 评论