剑指offer 38. 数字在排序数组中出现的次数

来源:互联网 发布:java数组的调用 编辑:程序博客网 时间:2024/06/02 05:44
//题目:给出排序数组,给出一个数,返回这个数的出现次数public class Main {public static void main(String[] args) throws Exception {System.out.println(findCount(new int[]{1},1));}public static int findCount(int[] input,int num) {int first = findFirstIndex(input,num);int last = findLastIndex(input, num);if(first == -1 || last == -1){return 0;}else{return last-first+1;}}public static int findFirstIndex(int[] input, int num){//找到第一次出现这个数的下标int low = 0;int high = input.length-1;boolean found = false;while(low<=high){int mid = (low+high)/2;if(input[mid] == num){found = true;}if(input[mid]<num){low = mid+1;}else{high = mid-1;}}if(found == false){return -1;}return high+1;}public static int findLastIndex(int[] input, int num){//找到最后一次出现这个数的下标int low = 0;int high = input.length-1;boolean found = false;while(low<=high){int mid = (low+high)/2;if(input[mid] == num){found = true;}if(input[mid]>num){high = mid-1;}else{low = mid+1;}}if(found == false){return -1;}return low-1;}}

0 0
原创粉丝点击