zoukankan      html  css  js  c++  java
  • 二分查找

    二分查找也是属于双指针应用的一种体现;
    二分查找在使用的时候,数据往往是有序的,并且一般是数组;因此一般两个指针一个是从左边开始,另一个是从右边开始;
    二分查找在使用的时候一般是有大体的框架的,比如在一个数组中查找一个数的写法如下:

    public int fun(int []num, int target){
          //定义左右两边的指针并进行相应的赋值
          int  left=0,right=num.length-1;
          
          while(left<=right)
          {
                int mid=left+(right-left)/2;
                if(num[mid]==target)
                {
                      //进行相应的操作
                      return mid;
                }
                else if(num[mid]<target)
                //更新左指针
                left=mid+1;
                else if(num[mid]>target)
                //更新右指针
                right=mid-1
          }
          return -1;
    }
    
    

    查找左侧边界

    public int fun(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] < target) {
                left = mid + 1;
            } else if (nums[mid] > target) {
                right = mid - 1;
            } else if (nums[mid] == target) {
                // 别返回,锁定左侧边界
                right = mid - 1;
            }
        }
        // 最后要检查 left 越界的情况
        if (left >= nums.length || nums[left] != target)
            return -1;
        return left;
    }
    

    查找右侧边界

    public int fun(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] < target) {
                left = mid + 1;
            } else if (nums[mid] > target) {
                right = mid - 1;
            } else if (nums[mid] == target) {
                // 别返回,锁定右侧边界
                left = mid + 1;
            }
        }
        // 最后要检查 right 越界的情况
        if (right < 0 || nums[right] != target)
            return -1;
        return right;
    }
    
  • 相关阅读:
    log4j/log4e的使用
    数据库主键不应该具有任何业务意义
    孔雀森林,何时开屏
    spring + hibernate
    JAVA的运行时类型识别(RTTI)
    开年感想,2005年总结
    iphone真机(越狱)通讯录导入进模拟器
    xcode中工程引用设置
    UIButton setImage 图片大小选择
    加密技术资源
  • 原文地址:https://www.cnblogs.com/noob-l/p/13604687.html
Copyright © 2011-2022 走看看