面试题
L_R
这个作者很懒,什么都没留下…
展开
-
面试题【1】二维数组中的查找
二维数组中的查找题干:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都自上而下递增的顺序排序,输入一个整数,判断该数组中是否存在。形如: 我想最普通的方法,就是一个一个,从头到尾的遍历,直到找到这个数为止,但这样效率太低了。 假如,我们需要寻找 8 ,那么发现 7 比 8 小,那么 8 肯定不在 7 这一行。因此,从 第二行 开始进行比较,发现 8 比10 小,那原创 2018-01-23 21:38:39 · 635 阅读 · 0 评论 -
面试题【3】链表的逆序打印
题干:输入链表的头结点,逆序打印出链表的值。因为每个人 对头结点的理解不一,这里 我分两种情况来写。第一种,头结点中的数据域不存放数据的; 第二种,头结点中的数据域存放数据的。 上面两种方法,都不会对链表的结构进行改变,本人之前在 菜鸟学习历程【12】链表 讲解过 将链表 结构 改变成 逆序的情况。如若,有讲述不正确的 地方,还希望得到指正。(1) 头结点中的数据域不存原创 2018-01-25 23:28:45 · 198 阅读 · 0 评论 -
面试题【2】替换空格
替换空格题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“We are happy”,则输出“We%20are%20happy”。我们脑海中立马闪出的想法是,从前往后遍历,每次找到一个 空格 就将 空格 后的字符向后整体移动 两个字节 ,那么 会出现部分字符 多次移动,这样时间复杂度就会提高,降低了效率。那么,我们换个思路,如果事先知道 有多少个空格,那么原创 2018-01-24 20:57:54 · 214 阅读 · 0 评论 -
面试题【4】用两个栈实现队列、用两个队列实现栈
题干:用两个栈实现一个队列。队列的声明如下:请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入结点和在队列头部删除结点的功能。首先,我们知道 栈 是先进后出的,队列 是先进先出的。我们先在 stack1 中插入 A 、 B、 C、 D 四个字母。 此时,我们如果要做出队操作的话,A 应该首先被 pop 出来,那么我们想到,把 stack1原创 2018-01-27 21:31:49 · 331 阅读 · 0 评论 -
面试题【5】旋转数组中的最小数字
题干:把一个数组最开始的若干个元素搬到数组的末尾,我们称为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组中最小的元素。例如:数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小元素为 1 。我想最为直接的方法就是从头到尾,遍历一次,那么这样的时间复杂度为 O(n);通过这样的方法得到的结果,面试官虽然不能算我们错,但也绝对不会给我们高分。 我原创 2018-01-29 23:16:26 · 219 阅读 · 0 评论 -
面试题【6】斐波拉契数列
题目一:写一个函数,输入n,求斐波拉契数列的第n项。斐波拉契数列的定义如下:f(n) = 0 ,n = 0; f(n) = 1 ,n = 1; f(n) = f(n-1) + f(n-2) , n > 1大家很容易想到的方法是使用递归,太明显的递归思想,于是一顿操作猛如虎就把代码敲完了,可是为什么这么敲大家可否想过?这么敲的好处在哪? 我们先来看看低配版的代码什么样?l...原创 2018-02-14 23:13:34 · 325 阅读 · 0 评论 -
面试题【7】对命令行参数传递的数(包括浮点数,负数,整数)进行排序
题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来 提示:需要排数的数字通过参数传递进来, 例如:输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1 5 7 #include <iostream>using namespace std;float myAtof(char *ptr){ float s = 0.0; ...原创 2018-02-17 21:42:59 · 594 阅读 · 0 评论 -
面试题【8】二进制中 1 的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是1001,有 2 位是 1 。因此,如果输入 9 ,该函数输出 2。分析:通常为了解决这个问题,我们会将每一位与 1 进行 & 运算,然后将这个数 右移(>>) 一次。那么根据这种思想,我们写出下面这样的代码:int NumberOf1(int n){ int...原创 2018-02-20 22:05:13 · 362 阅读 · 0 评论 -
面试题【9】数值的整数次方
题目:实现函数double Power(double base, int exponent),求 base 的 exponent 次方。不得使用库函数,同时不需要考虑大数问题。这道面试题看似简单,但很容易忽略一些细节问题。当指数为负数时,我们可以先对指数求绝对值,然后算出次方再求倒数。既然要求倒数了,我们很自然想到有没有可能对 0 倒数,对 0 求倒数怎么办? 根据上面的猜想,我们可以写出如...原创 2018-02-21 16:04:52 · 189 阅读 · 0 评论