
二分查找
Jerry-Rulai
这个作者很懒,什么都没留下…
展开
-
旋转数组的最小数字
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 思路: 若直接用O(n)的顺序查找,显然不是最优解 因为经过旋转的数组也是由两个排好序的数组组成,要充分利用这一性质。 我们采取类似二分查找的方法,用p1指向开...原创 2019-02-12 14:31:08 · 86 阅读 · 0 评论 -
二维数组的查找
若已知一个二维数组每一行从左到右是递增的,每一列从上到下是递增的,那么可以采用一种时间复杂度为O(n)的算法,其中n为数组的列数或行数,从而取代了遍历一遍查找(O(n*n)) 算法: 二维数组是个矩形状,每次我们要目标数字与矩形右上角的数比较,若目标数字大,则矩形最上面一行砍掉,若目标数字小,则把矩形最右边一列砍掉。直到矩形消失。 代码如下: bool Find(int (*matrix)[4],...原创 2019-01-31 20:41:02 · 96 阅读 · 0 评论 -
33. 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 示例 1: 输入: nums = [4,5,6,7,0,1,2], targ...原创 2019-01-18 19:10:56 · 76 阅读 · 0 评论 -
【网易】丰收
题目描述 又到了丰收的季节,恰逢小易去牛牛的果园里游玩。 牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。 在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。 牛牛觉得这个问题太简单,所以希望你来替他回答。 输入描述: 第一行一个数n(1 <= n <= 105)。 第二行n个数ai(1 <= ai <= 1...原创 2019-09-03 11:18:18 · 132 阅读 · 0 评论