二分查找
daladongba
这个作者很懒,什么都没留下…
展开
-
leetcode-在排序数组中查找元素的第一个和最后一个位置-java
题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]思路:其实就是寻求最左边界问题,遇到target不要着急原创 2020-07-22 11:12:44 · 180 阅读 · 0 评论 -
leetcode-153/154旋转数组的最小值-Java
遇到两个比较不错二分查找的题,不过我觉得难度可能标反了,用简单二分查找就能解决的题No.153寻找旋转排序数组中的最小值标成了中等,而比No.153要多考虑一个条件的题剑指 Offer 11. 旋转数组的最小数字标成了简单下面我们先看中等题153:题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素(重点,要考!!)。示例 1:输入:原创 2020-07-22 10:18:57 · 246 阅读 · 0 评论 -
leetcode-有序数组中的单一元素-Java
题目描述:给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10思路:二分查找:int mid = l + (r - l)/2,boolean flag = (r - mid)%2 == 0有四种情况(1)nums[mid] == nums[mid+1] && flag 说明mid指向双数的前一个原创 2020-07-21 14:11:56 · 182 阅读 · 0 评论