zoukankan      html  css  js  c++  java
  • Search for a Range

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

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

    Example

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

     分析:

    这道题只需要分别对起点和终点用二分查找就可以啦~

    public class Solution {
        /** 
         *@param A : an integer sorted array
         *@param target :  an integer to be inserted
         *return : a list of length 2, [index1, index2]
         */
        public int[] searchRange(int[] A, int target) {
            if (A.length == 0) {
                return new int[]{-1, -1};
            }
            int[] result = new int[2];
            int start, end;
            
            //search the first element
            start = 0;
            end = A.length - 1;
            while (start + 1 < end) {
                int mid = start + (end - start) / 2;
                if (A[mid] == target) {
                    end = mid;
                } else if (A[mid] < target) {
                    start = mid;
                } else {
                    end = mid;
                }
            }
            
            if(A[start] == target) {
                result[0] = start;
            } else if (A[end] == target){ 
                result[0] = end;
            } else {
                result[0] = result[1] = -1;
                return result;
            }
                
            //search the second element
            start = 0;
            end = A.length - 1;
            while (start + 1 < end) {
                int mid = start + (end - start) / 2;
                if (A[mid] == target) {
                    start = mid;
                } else if (A[mid] < target) {
                    start = mid;
                } else {
                    end = mid;
                }
            }
            
            if(A[end] == target) {
                result[1] = end;
            } else if (A[start] == target){ 
                result[1] = start;
            } else {
                result[0] = result[1] = -1;
                return result;
            }
            return result;
        }
    }
  • 相关阅读:
    url中的jsessionid解释
    电脑双网卡配置
    jedis api使用
    RedisTemplate访问Redis数据结构
    动态jdk启动项目
    导入导出Excel工具类ExcelUtil
    git超详细教程
    Linux配置SSH免用户免密码登陆
    hdfs shell的基本操作以及hdfsWeb查看文件
    清除redis的特定前缀的key
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/5759333.html
Copyright © 2011-2022 走看看