数字在排序数组中出现的次数
public class Solution {
public int GetNumberOfK(int[] array , int k) { if(array==null||array.length==0) return 0; int first=getFirstK(array,k); int lask=getLastK(array,k); if(first==-1||lask==-1) return 0; else return lask-first+1; } private int getFirstK(int[] array, int k){ int start=0, end=array.length-1; while(start<=end){ int mid=(start+end)/2; if(array[mid]<k){ start=mid+1; } else if(array[mid]>k){ end=mid-1; } else if(mid>start&&array[mid-1]==k){ end=mid-1; } else { return mid; } } return -1; } private int getLastK(int[] array, int k) { int start=0, end=array.length-1; while(start<=end){ int mid=(start+end)/2; if(array[mid]<k){ start=mid+1; } else if(array[mid]>k){ end=mid-1; } else if(mid<end&&array[mid+1]==k){ start=mid+1; } else { return mid; } } return -1; } }
posted on 2019-03-12 16:08 www_practice 阅读(129) 评论(0) 编辑 收藏 举报