zoukankan      html  css  js  c++  java
  • 34. Find First and Last Position of Element in Sorted Array

    一、题目

      1、审题

      2、分析

        求 target 在有序数组 nums 中出现的最小下标和最大下标组成的数组。否则返回 {-1, -1}。时间复杂度为 O(log n)。

    二、解答

      1、思路:

        时间复杂度为 O(log n),想到用二分法。要求所在下标组合,则需在求得 target时在向前、向后查找 target,直至找到 target 出现的最大、最小下标。

    class Solution {
        public int[] searchRange(int[] nums, int target) {
    
            int len = nums.length;
            int[] result = new int[]{-1, -1};
            int low = 0;
            int high = len - 1;
    
            if(len == 0)
                return result;
            if(target < nums[low] || target > nums[high])
                return result;
    
            while(low < high) {
                int median = (low + high) / 2;
    
                if(nums[median] > target)
                    high = median - 1;
                else if(nums[median] < target)
                    low = median + 1;
                else {
                    low = median;
                    high = median;
                    while(low - 1 >= 0 && nums[low - 1] == target) low--;
                    while(high + 1 < len && nums[high + 1] == target) high++;
                    break;
                }
            }
            
            if(nums[low] == target) {
                result[0] = low;
                result[1] = high;    
            }
                        
            return result;
        }
    }
  • 相关阅读:
    java
    java
    informix资料下载
    linux下vim更改注释颜色
    linux修改目录颜色
    Centos下将sh脚本变为可全局运行的方法
    CentOS7启动时自动加载内核模块
    lsmod,depmod,modprobe,modinfo,insmod,rmmod
    自旋锁与信号量
    软中断、tasklet和工作队列
  • 原文地址:https://www.cnblogs.com/skillking/p/9440811.html
Copyright © 2011-2022 走看看