二分查找
Gnomeshgh___
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 53 - I. 在排序数组中查找数字 I(二分)
题目描述统计一个数字在排序数组中出现的次数。思路二分的模板题找到大于等于target最小的数和小于等于target最大的数就可以了具体代码class Solution {public: int search(vector<int>& nums, int target) { if (nums.size() == 0) return 0; int l = 0, r = nums.size() - 1; while (l &原创 2021-05-16 01:01:04 · 49 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置(二分)
问题描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路直接二分,注意一下数组中不存在target的情况就行了AC代码class Solution {public原创 2020-12-21 21:33:52 · 51 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
问题描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums =原创 2020-12-21 21:20:52 · 67 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组(二分)
问题描述升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4示例 2:输入:nums = [4,5,6,7,0,1,2], target = 3输出:-1示例 3:输入:nums = [1], targ原创 2020-12-19 18:54:11 · 110 阅读 · 1 评论