
LeetCode - 二分查找
学习中的小码农
相信勤能补拙!
展开
-
LeetCode 153. 寻找旋转排序数组中的最小值
LeetCode 153. 寻找旋转排序数组中的最小值题解:可以采用二分查找的方式。区间的左端点为 L,右端点为R。中间点为mid。我们将 nums[mid] 与 nums【R】比较。如果,nums【mid】 < nums【R】,则nums【mid】为最小值右边的元素,因此忽略右半部分,如果nums【mid】 > nums【R】,则nums【mid】 为最小值左边的元素,忽略左半部分。class Solution { public int findMin(int[] nums原创 2021-06-24 10:36:23 · 91 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置。题解:本题采用二分查找,首先查找开始位置,再查找结束位置。class Solution { public int[] searchRange(int[] nums, int target) { int n = nums.length; int[] ans = new int[2]; ans[0] = -1; ans[1] = -1;原创 2021-06-23 10:02:09 · 84 阅读 · 0 评论 -
LeetCode 81. 搜索旋转排序数组 II(二分查找)
LeetCode 81. 搜索旋转排序数组 II(二分查找)题解:在本题中,可以采用二分查找的思想,选择一个中间值,将数组分为[l,mid][mid + 1,r]两部分,如果没有重复的数字的话,这两部分中必然有一部分有序。此时在有序的部分判断。例如:假设区间[l, mid] 有序,如果 target >= nums[l] && target < nums[mid]。则更新右边界为 r = mid - 1,否则的话更新l = mid + 1.对于有重复数字的情况,原创 2021-06-22 10:44:58 · 148 阅读 · 0 评论 -
LeetCode 74. 搜索二维矩阵
LeetCode 74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。题解:采用二分查找,在查找的过程中,进行坐标变换,例如对于mid,他所对应的行为mid /n .列为mid % n。其中,n为矩阵总列数。class Solution { public boolean searchMatrix(int[][] matrix, int target) {原创 2021-06-20 14:03:15 · 83 阅读 · 0 评论