二分查找
有关二分查找的题目
practicePLUS
你的目标到底是什么
展开
-
75. 寻找峰值 (二分法、双指针)
你给出一个整数数组(size为n),其具有以下特点:相邻位置的数字是不同的 A[0] < A[1] 并且 A[n - 2] > A[n - 1]假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。样例给出数组[1, 2, 1, 3, 4, 5, 7, 6]返回1, 即数值 2 所在位置, 或者6, 即...原创 2018-05-29 15:45:25 · 1335 阅读 · 0 评论 -
61. 搜索区间(二分法)
给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]样例给出[5, 7, 7, 8, 8, 10]和目标值target=8,返回[3, 4]思想:两个指针,前后夹击解法一(时间复杂度O(N))class Solution {public: /*转载 2018-05-29 15:42:27 · 1000 阅读 · 0 评论 -
60. 搜索插入位置(二分法)
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。样例[1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0思想:对于这种有序且需要查找元素的题,首先应想到二分法查找,因为其时间复杂度低logn转载 2018-05-29 15:42:46 · 1101 阅读 · 0 评论 -
39. 恢复旋转排序数组
给定一个旋转排序数组,在原地恢复其排序。说明什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]1、我的刚开始的解法(比较复杂)class Solu转载 2018-05-29 15:41:54 · 417 阅读 · 1 评论 -
14. 二分查找
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例在数组[1, 2, 3, 3, 4, 5, 10]中二分查找3,返回2。思路:1、target==array[mid]时,不能直接返回mid,需要继续划分,直到low==high(代码一),或者low+原创 2018-05-29 15:48:56 · 136 阅读 · 0 评论