博客 记录生活,记录工作。

面试算法基础题

2017-08-03

1.数组

面试题1.1:数组中出现次数超过一半的数字

解法1:快排模式,找中位数

解法2:该数字个数大于其他数字个数之和

面试题1.2:数组中唯一重复的数字

解法1:数组下边(条件 n个数, 0<= a[i] <= n)

解法2:bitmap

面试题1.3:数组中最小的K个数

解法1:快排模式,找index = k

解法2:取出最小k个(海量数据)

面试题1.4:连续子数组最大和

面试题1.5:数组中的逆序对

面试题1.6:数字k在排序数组中出现的次数

解法1:分别二分查找k第一次出现的位置和k最后一次出现的位置

面试题1.7:数组中除了2个数字出现1次,其他数字都出现2次

解法1:将所有元素异或,取出结果中的一个1的index,然后将数组分成2组,分别求出异或结果。

2.字符串

3.链表

面试题3.1:两个链表的第一个公共节点

解法1:分别把两个链表的节点放到两个栈中,接下来出栈比较最后一个相同节点

解法2:计算两个链表长度,较长的链表先走长度之差步,然后继续比较第一个相同节点


下一篇 UNIX socket通信

评论

目录