问题1:在有序数组中查找某个定值
例子:在数组 [1,3,4,6,6,9,11] 中查找 3 的位置
思想:
当数组不是很大的时候可以逐个检查,也就是“枚举”,这样做的时间复杂度是
实际上,我们可以通过一个简单的判断将问题缩小一半。在上面的例子中,我们的目标在区间
a[1..7]
中查找
3
的位置(
这样做的时间复杂度是
O(log2(n))
(叶子数为
n
的完全二叉树的高度的数量级),在内存足够大的情况下,
代码:
问题2
在有序数组中查找两个和为定值的数
问题3
在数组中查找多个和为定值的数
问题4
在数组中查找出现次数超过一半的数
问题5
在数组中查找和为定值的区间
问题6
在数组中查找包含所有数的最小区间