• 37、数字在排序数组中出现的次数


    一、题目

    统计一个数字在排序数组中出现的次数。

    二、解法

     1 public class Solution {
     2    public int GetNumberOfK(int [] array , int k) {
     3         if(array == null || array.length == 0)
     4             return 0;
     5         int first = GetFirst(array,k,0,array.length-1);
     6         int last = GetLast(array,k,0,array.length-1);
     7         if(first == -1 || last == -1)
     8             return 0;
     9         return last-first+1;
    10     }
    11     //获取第一个
    12     public int GetFirst(int[] array,int k, int start, int end){
    13         while(start <= end){
    14             int mid = (start+end)/2;
    15            if(k < array[mid])
    16                end = mid-1;
    17            else if(k > array[mid])
    18                start = mid+1;
    19            else{//当相等的时候 并左边一个不等于k 或者是第一个
    20                if(mid == 0 || (mid > 0 && array[mid-1] != k))
    21                    return mid;
    22                else
    23                    end = mid-1;
    24            }
    25         }
    26         return -1;
    27     }
    28     //获取最后一个
    29     public int GetLast(int[] array,int k, int start, int end){
    30         while(start<=end){
    31             int mid = (start+end)/2;
    32             if(k < array[mid])
    33                 end = mid-1;
    34             else if(k > array[mid])
    35                 start = mid+1;
    36             else{
    37                 //当相等的时候,下标等于最后一个 或者右边一个不等于k
    38                 if(mid == array.length-1 || 
    39                   (mid < array.length-1 && array[mid+1] != k))
    40                     return mid;
    41                 else
    42                     start = mid+1;
    43             }
    44         }
    45         return -1;
    46     }
    47 }
  • 相关阅读:
    python 文件操作
    高级函数
    运行cadence dpi例子出现的问题
    我对验证的一些理解【zz】
    archlinux 下挂载ntfs分区,显示"permission denied"
    vs2012安装SharePoint 2013的项目模版
    Iptables工具的使用
    webmin简介
    cassandra简介
    linux中端口扫描
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7456640.html
Copyright © 2020-2023  润新知