• 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]);
        }
    }

     

  • 相关阅读:
    redhat 6安装详解
    使用pidstat查看进程资源使用情况
    (转)调优 DB2 UDB v8.1 及其数据库的最佳实践
    (转)LVS安装使用详解
    (转)[小工具] Linux下列格式化工具
    (转)zabbix3.4使用percona-monitoring-plugins监控mysql
    (转)zabbix之生产案例
    (转)CentOS7 LVM添加硬盘及扩容
    (转)计算机网络基础知识总结
    (转)网络基础之网络协议篇
  • 原文地址:https://www.cnblogs.com/mayang2465/p/11736380.html
Copyright © 2020-2023  润新知