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

来源:互联网 发布:定制化软件 编辑:程序博客网 时间:2024/06/05 09:15
public class Solution {    public int GetNumberOfK(int [] array , int k) {        int first = GetFirstOfK(array,k,0,array.length - 1);        int end = GetLastOfK(array,k,0,array.length - 1);        int num = 0;        if(first > -1 && end > -1){         num = end - first + 1;            return num;        }        return num;    }    public int GetFirstOfK(int [] array,int k,int start,int end){        if(start > end){            return -1;        }        int middle = (start + end)/2;        int middleData = array[middle];        if(middleData == k){            if((middle > 0 && array[middle - 1] != k) || middle == 0){                return middle;            }            else                end = middle - 1;        }        else if(middleData > k){            end = middle - 1;        }        else             start = middle + 1;        return GetFirstOfK(array,k,start,end);    }    public int GetLastOfK(int [] array,int k,int start,int end){        if(start > end){            return -1;        }        int middle = (start + end)/2;        int middleData = array[middle];        if(middleData == k){            if((middle < array.length - 1 && array[middle + 1] != k) || middle == array.length -1){                return middle;            }            else                start = middle + 1;        }        else if(middleData < k){            start = middle + 1;        }        else             end = middle - 1;        return GetLastOfK(array,k,start,end);    }}

阅读全文
0 0
原创粉丝点击