![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
二分
二分思想
Huiex胖子君
广告位招租
展开
-
剑指 Offer 53 - II. 0~n-1中缺失的数字
二分法,主要是边界的细节,无了 public int missingNumber(int[] nums) { if (nums.length == 0) return 0; /** 判断nums[mid] 是否等于 mid * 如果等于mid,那么这个数字在 [mid+1,right]区间内 * 如果不等于mid,就在 [left,mid-1]*/ int left = 0; int right原创 2021-11-29 19:05:05 · 116 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
先用二分找到目标数字,同时也缩小了区间再用遍历找到目标区间的边界/** 典型二分,说了有序数组*/ public int search(int[] nums, int target) { /** 先确立好边界*/ int left = 0; int right = nums.length - 1; /** 开始二分,当left > right 时结束*/ while (left <= right){原创 2021-11-29 18:50:46 · 155 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
二分查找,范围逼近 减治思想当 nums[mid]小于最右边的数,说明旋转点在[left,mid]的区间内 ,将查找区间的右边界变为mid(细节)当 nums[mid]大于最右边的数,说明旋转点在[mid+1,right]的区间内,将将查找区间的左边界变为mid+1当 nums[mid]等于最右边的数,就将right–,缩小范围,因为 right–并不会结果产生影响,为什么? 因为right–的前提条件为nums[mid] = nums[right],那么该nums[right]一定不为旋转点最后原创 2021-11-29 11:00:16 · 238 阅读 · 0 评论 -
278. 第一个错误的版本
正确答案:public int firstBadVersion(int n) { int left = 1; int right = n; while(left < right) { int mid = left + (right - left) / 2; if(isBadVersion(mid)){ right = mid; }else{ left原创 2021-10-28 12:12:03 · 66 阅读 · 0 评论 -
540. 有序数组中的单一元素
二分法(1)先找到中间值mid,然后对左右元素进行判断,如果都不等于,就证明该元素为单独的(2)如果左相等或者右相等,就根据情况进行在次二分重点在于如何判断mid值二分 左边还是右边通过判断mid和相等这mid+1或者m-1,前后的数组元素的奇偶奇数证明该数组含有单个元素,就进行二分继续查找public static int singleNonDuplicate(int[] nums) { int left = 0; int right = nums.length-1;原创 2021-10-28 10:50:27 · 77 阅读 · 0 评论 -
744. 寻找比目标字母大的最小字母
public static char nextGreatestLetter(char[] letters, char target) { int left = 0; int right = letters.length-1; while(left <= right) { int mid = left + (right - left) / 2 ; if(letters[mid] > target) { right = mid -1; }...原创 2021-10-26 11:24:50 · 52 阅读 · 0 评论 -
69.算数平方根
二分通过 mid = left + (right - left) / 2; 来取平均值public static int mySqrt(int x) { if(x <= 1) { return x; } int left = 1; int right = x; int mid = 1; while(left <= right) { mid = left + (right - left) / 2; int sqre = x / mi..原创 2021-10-25 11:29:24 · 82 阅读 · 0 评论