zoukankan      html  css  js  c++  java
  • *Search for a range

    题目:

    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].

    用九章模板

     1 /**
     2  * 本代码由九章算法编辑提供。没有版权欢迎转发。
     3  * - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
     4  * - 现有的面试培训课程包括:九章算法班,系统设计班,BAT国内班
     5  * - 更多详情请见官方网站:http://www.jiuzhang.com/
     6  */
     7 
     8 public class Solution {
     9     public int[] searchRange(int[] A, int target) {
    10         int start, end, mid;
    11         int[] bound = new int[2]; 
    12         
    13         // search for left bound
    14         start = 0; 
    15         end = A.length - 1;
    16         while (start + 1 < end) {
    17             mid = start + (end - start) / 2;
    18             if (A[mid] == target) {
    19                 end = mid;     //让右指针right(也就是这里的end)往左边靠拢,也就是找到第一个等于target的数。
    20             } else if (A[mid] < target) {
    21                 start = mid;
    22             } else {
    23                 end = mid;
    24             }
    25         }
    26         if (A[start] == target) {
    27             bound[0] = start;
    28         } else if (A[end] == target) {
    29             bound[0] = end;
    30         } else {
    31             bound[0] = bound[1] = -1;
    32             return bound;
    33         }
    34         
    35         // search for right bound
    36         start = 0;
    37         end = A.length - 1;
    38         while (start + 1 < end) {
    39             mid = start + (end - start) / 2;
    40             if (A[mid] == target) {
    41                 start = mid;  //让左指针left(也就是这里的start)往右边靠拢,直到start+1<end,找到最后一个等于target的数。
    42             } else if (A[mid] < target) {
    43                 start = mid;
    44             } else {
    45                 end = mid;
    46             }
    47         }
    48         if (A[end] == target) {
    49             bound[1] = end;
    50         } else if (A[start] == target) {
    51             bound[1] = start;
    52         } else {
    53             bound[0] = bound[1] = -1;
    54             return bound;
    55         }
    56         
    57         return bound;
    58     }
    59 }
  • 相关阅读:
    深入浅出 消息队列 ActiveMQ
    win7系统如何恢复administrator用户
    为什么新建的管理员账号权限没有Administrator大?
    关于maven-jetty-plugin 自动重启问题
    jquery parent() parents() closest()区别
    【JEECG技术文档】JEECG部门管理员操作手册
    【JEECG技术文档】JEECG高级查询构造器使用说明
    【JEECG技术文档】数据权限自定义SQL表达式用法说明
    JEECG 3.7.2版本发布,企业级JAVA快速开发平台
    jeecg好用吗,看看大家的评价
  • 原文地址:https://www.cnblogs.com/hygeia/p/4834240.html
Copyright © 2011-2022 走看看