数字再排序数组中出现的次数

来源:互联网 发布:hd网络是什么意思啊 编辑:程序博客网 时间:2024/06/06 03:36

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

2、二分查找,找出第一次出现k的位置first和最后一次出现k的位置last
3、代码:

public int GetNumberOfK(int [] array , int k) {        int  first, last;        first = getFirstPos(array,k);//获得k第一次出现的位置        if(first == -1)            return 0;        last = getLastPos(array,k);//获得k最后一次出现的位置        //System.out.println(first+" "+last);        return last - first + 1;    }    private int getFirstPos(int[] array, int k) {        int len = array.length;        int start = 0, end = len - 1;        int mid = ( start + end ) / 2;        boolean isExistEqual = false;        while(start <= end){            if(array[mid] > k){                end = mid - 1;            }else if(array[mid] < k){                start = mid + 1;            }else if(array[mid] == k){                end = mid - 1;                isExistEqual = true;            }            mid = ( start + end ) / 2;        }        if(!isExistEqual)            return -1;        return start;    }    private int getLastPos(int[] array, int k) {        int len = array.length;        int start = 0, end = len - 1;        int mid = ( start + end ) / 2;        boolean isExistEqual = false;        while(start <= end){            if(array[mid] > k){                end = mid - 1;            }else if(array[mid] < k){                start = mid + 1;            }else{                start = mid + 1;                isExistEqual = true;            }            mid = ( start + end ) / 2;        }        if(!isExistEqual){            return -1;        }        return end;    }
原创粉丝点击