zoukankan      html  css  js  c++  java
  • 二分查找向左或向右紧缩

     class Solution {
         public int[] searchRange(int[] nums, int target) {
       int[] res=new int[2];
          
                      res[0]=findleft(nums,target);
                      res[1]=findright(nums,target);
                      return res;
         }
         private int findright(int[] nums, int target) {
          int left=0;
          int right=nums.length;   //向左或向右紧缩时,就用nums.length; 因此while里为<号 不带等号 等就越界
          while (left<right) {
         int mid=(left+right)>>1;
          if (nums[mid]==target) {
           left=mid+1;    //向右,因为是right=nums.length;所以是左闭右开
          }
          else if (nums[mid]<target) {
           left=mid+1;
          }
          else {
           right=mid;
          }
        }
         if (left == 0) return -1;    //向右紧缩  却缩到了最左侧 说明没找到
                    return nums[left-1] == target ? (left-1) : -1;
       }

       private int findleft(int[] nums, int target) {
         int left=0;
          int right=nums.length;
          while (left<right) {
         int mid=(left+right)>>1;
          if (nums[mid]==target) {
           right=mid;      //向左紧缩,因为是right=nums.length;所以是左闭右开
          }
          else if (nums[mid]<target) {
           left=mid+1;
          }
          else {
           right=mid;
          }
        }
       if (left >= nums.length || nums[left] != target)//向左紧缩,却缩到了最右侧 说明没找到
                          return -1;
               return left;
       }
     }
  • 相关阅读:
    JS和PYTHON中数据类型比较
    http状态码
    ffmpeg architecture(上)
    降低数值精度以提高深度学习性能
    IaaS、PaaS 和 SaaS:云服务模型概述
    英特尔Intel® Arria® 10 FPGA加速器设计
    基于至强® 平台的内存数据库解决方案
    MLPerf结果证实至强® 可有效助力深度学习训练
    如何从数据角度为人工智能部署做好数据准备
    英特尔内存革新助平安云 Redis 云服务降本增效
  • 原文地址:https://www.cnblogs.com/wl889490/p/12608518.html
Copyright © 2011-2022 走看看