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:计算两个链表长度,较长的链表先走长度之差步,然后继续比较第一个相同节点