zoukankan      html  css  js  c++  java
  • 34. 在排序数组中查找元素的第一个和最后一个位置

     

      给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

     

      你的算法时间复杂度必须是 O(log n) 级别。

     

      如果数组中不存在目标值,返回 [-1, -1]。

     

      示例 1:

     

        输入: nums = [5,7,7,8,8,10], target = 8
        输出: [3,4]
      示例 2:

     

        输入: nums = [5,7,7,8,8,10], target = 6
        输出: [-1,-1]

     题解:

    package array;
    
    public class L34 {
        public static int[] searchRange(int[] nums, int target) {
            int index = searchIndex(nums,target,0,nums.length-1);
            int lowIndex = index,highIndex = index;
            if(lowIndex == -1 && highIndex == -1){
                return new int[]{lowIndex,highIndex};
            }
            while(lowIndex >= 0 && nums[lowIndex] == target){
                lowIndex --;
            }
            lowIndex++;
            while(highIndex<nums.length && nums[highIndex] == target){
                highIndex ++;
            }
            highIndex--;
            return new int[]{lowIndex,highIndex};
        }
        public static int searchIndex(int[] nums, int target,int start,int end){
            while(start <= end){
                if(nums[(start+end)/2] == target){
                    return (start+end)/2;
                }else if(nums[(start+end)/2] > target){
                    end = (start+end)/2-1;
                    return searchIndex(nums, target,start,end);
                }else {
                    start =  (start+end)/2+1;
                    return searchIndex(nums, target,start,end);
                }
            }
            return -1;
        }
    
        public static void main(String[] args) {
    
            int[] nums = {1};
            int[] returnNums = searchRange(nums,1);
            System.out.println(returnNums[0]+"   "
                    +returnNums[1]);
        }
    }

     

  • 相关阅读:
    闲话缓存:ZFS 读缓存深入研究-ARC(一)
    闲话缓存:算法
    闲话缓存:概述
    闲话Cache:始篇
    链表实现多项式求和求积
    Linux Shell常用技巧(目录)
    Linux Shell常用技巧(十二)
    Linux Shell常用技巧(十一)
    Linux Shell常用技巧(十)
    Linux Shell常用技巧(九)
  • 原文地址:https://www.cnblogs.com/mayang2465/p/11736380.html
Copyright © 2011-2022 走看看