面试
明明77
这个作者很懒,什么都没留下…
展开
-
技术面试手写代码考题--二分查找
技术面试手写代码考题-考题1:二分查找(递归与非递归): 二分查找思想: 1.数组从小到大排序; 2.查找的key每次和中间数比较,如果key小于mid,查找mid左侧的数组部分;如果key大于mid,则查找mid右侧的数组部分;如果想等,则直接返回mid. 非递归输入:排序数组-array,数组大小-asize,查找值-key 返回:返回数组中的相应位置,否则返回-1int BinarySe原创 2017-11-15 00:02:35 · 890 阅读 · 0 评论 -
技术面试手写代码考题--快速排序
考题2:快速排序(递归与非递归)基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序是一种不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 分治的策略,通常称其为分治法(Divide-and-Conq原创 2017-11-15 13:46:23 · 840 阅读 · 0 评论 -
面试--求数组,左边的数都小于等于它,右边的数都大于等于它
题目在一个 int 数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。直观想法是用两个数组 a、b。a[i]、b[i]分别保存从前到 i 的最大的数和从后到 i 的最小的数,一个解答:这需要两次遍历,然后再遍历一次原数组,将所有 data[i]>=a[i-1]&&data[i]<=b[i]的 data[i]找出即可。给出这个解答后,面试官有要求只能用一个辅助数组,且要求少遍历一次。转载 2017-12-14 19:04:44 · 2662 阅读 · 0 评论 -
面试-剑指offer-数组中出现次数超过一半的数字
题目数组中有一个数字出现的次数超过数组长度的一般,请找出这个数字。思路 解法一:基于Partition函数的O(n)算法 数组中有一个数字出现的次数超过了数组长度的一般。如果把这个数组排序,那么排序之后位于数组中间的数字一定就是那个出现次数超过数组长度一半的数字。也就是说,这个数字就是统计学上的中位数,即长度为n的数组中第n/2大的数字。我么有成熟的O(n)的算法得到数组中任意第k大的数字。 快速排转载 2017-12-14 21:58:21 · 156 阅读 · 0 评论 -
数据结构--字符串
字符串与子串、子序列C/C++标准库提供的字符串处理函数 strlen() 返回s的长度,不包括字符串结束符null strcmp(s1,s2) 比较两个字符串s1和s2是否相同。若s1与s2星等,返回1,若s1大于s2,返回整数,若s1小于s2,则返回负数 strcat(s1,s2) 将字符串s2连接到s1后,并返回s1 strcpy(s1,s2) 将s2复制给s1,转载 2017-12-15 00:00:06 · 288 阅读 · 0 评论