IT评测·应用市场-qidao123.com

标题: 力扣:二分查找法和一些留意事项 [打印本页]

作者: 惊落一身雪    时间: 2025-3-20 23:32
标题: 力扣:二分查找法和一些留意事项
题目描述:


解题

  1. class Solution {
  2.     public int search(int[] nums, int target) {
  3.         int left = 0;
  4.         int right = nums.length - 1;
  5.         while(left <= right){
  6.             int mid = (left + right) / 2;
  7.             if(target > nums[mid]){
  8.                 left = mid + 1;
  9.             }else if(target < nums[mid]){
  10.                 right = mid - 1;
  11.             }else {
  12.                 return mid;
  13.             }
  14.         }
  15.         return -1;
  16.     }
  17. }
复制代码
问题:

在二分查找中,通常碰到的两个问题:
以上两个问题的关键点就在于我们对于数组利用时,所选择的查询区间,一般分为两种:
3. 左闭右闭 ->> [ ] 表现从最左边到最右边的区间查找,例如[1, 3] 就是 1,2,3
4. 左闭右开 ->> [ )表现从最左边到最右边 - 1的区间查找,例如[1,3)就是1,2
办理

以上两个问题的关键点就在于我们对于数组利用时,所选择的查询区间,一般分为两种:
所以首先确定好自己所选取的区间就可以办理上述两个问题了:
这样我们就办理了二分查找一些不确定的问题。
补充

假如选择左闭右开的区间去进行查询的话,那么 right 的起始位置应该是 num.length 而不是 num.length - 1。就是因为我们查询的时候并不包罗最右边的这个数字。
代码

左闭右闭
  1. class Solution {
  2.     public int search(int[] nums, int target) {
  3.         int left = 0;
  4.         int right = nums.length - 1;
  5.         while(left <= right){
  6.             int mid = (left + right) / 2;
  7.             if(target > nums[mid]){
  8.                 left = mid + 1;
  9.             }else if(target < nums[mid]){
  10.                 right = mid - 1;
  11.             }else {
  12.                 return mid;
  13.             }
  14.         }
  15.         return -1;
  16.     }
  17. }
复制代码
左闭右开
  1. class Solution {
  2.     public int search(int[] nums, int target) {
  3.         int left = 0;
  4.         int right = nums.length;
  5.         while(left < right){
  6.             int mid = (left + right) / 2;
  7.             if(target > nums[mid]){
  8.                 left = mid + 1;
  9.             }else if(target < nums[mid]){
  10.                 right = mid;
  11.             }else {
  12.                 return mid;
  13.             }
  14.         }
  15.         return -1;
  16.     }
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4