[剑指Offer][数组]数字在升序数组中出现的次数

题目描述

统计一个数字在升序数组中出现的次数。
 
 1 public class Solution {
 2     public int GetNumberOfK(int [] array , int k) {
 3        if(array.length == 0) {
 4            return 0;
 5        }
 6        int result = 0;
 7        for(int i = 0; i < array.length; i ++) {
 8            if(array[i] == k) {
 9                result ++;
10            }
11        }
12        return result;
13     }
14 }
 1 public class Solution {
 2     public int GetNumberOfK(int[] array , int k) {
 3        int index = binarySearch(array, k);
 4         if(index < 0) {
 5             return 0;
 6         }
 7         int count = 1;
 8         for(int i = index + 1; i < array.length && array[i] == k; i++) {
 9             count++;
10         }
11         for(int i = index - 1; i >= 0 && array[i] == k; i --) {
12             count++;
13         }
14         return count;
15     }
16     
17     private int binarySearch(int[] array, int target) {
18         int left = 0;
19         int right = array.length - 1;
20         while(left <= right) {
21             int middle = (left + right) / 2;
22             if(array[middle] == target) {
23                 return middle;
24             }
25             if(array[middle] > target) {
26                 right = middle - 1;
27             }
28             if(array[middle] < target) {
29                 left = middle + 1;
30             }
31         }
32         return -1;
33     }
34 }

 

posted @ 2021-05-13 23:41  StringBuilder  阅读(57)  评论(0)    收藏  举报