zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

    Given a sorted array of integers, find the starting and ending position of a given target value.

    Your algorithm's runtime complexity must be in the order of O(log n).

    If the target is not found in the array, return [-1, -1].

    For example,
    Given [5, 7, 7, 8, 8, 10] and target value 8,
    return [3, 4].

    思路:

    二分查找

    package array;
    
    public class SearchForARange {
    
        public int[] searchRange(int[] nums, int target) {
            int[] res = { -1, -1 };
            int n;
            if (nums == null || (n = nums.length) == 0) return res;
            
            int index = -1;
            int start = 0;
            int end = n - 1;
            while (start <= end) {
                int mid = (end - start) / 2 + start;
                if (nums[mid] == target) {
                    index = mid;
                    break;
                } else if (nums[mid] < target) {
                    start = mid + 1;
                } else {
                    end = mid - 1;
                }
            }
            
               res[0] = index;
               res[1] = index;
               while (res[0] > 0 && nums[res[0] - 1] == target) --res[0];
               while (res[1] < n - 1 && nums[res[1] + 1] == target) ++res[1];
            
            return res;
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] nums = { 5, 7, 7, 8, 8, 10 };
            SearchForARange s = new SearchForARange();
            for(int i : s.searchRange(nums, 10))
            System.out.println(i);
        }
    
    }
  • 相关阅读:
    CF1480
    网络编程中常见地址结构与转换(IPv4/IPv6)
    inet_pton, inet_ntop
    mktime 夏令时
    C/C++中volatile关键字详解
    STL之vector容器详解
    Linux学习--gdb调试
    Linux编程基础——GDB(设置断点)
    FTP模式简式:PORT/PASV/EPRT/EPSV
    strchr和strstr 函数
  • 原文地址:https://www.cnblogs.com/null00/p/5068724.html
Copyright © 2011-2022 走看看