[剑指Offer][数组]数字在升序数组中出现的次数
Posted StringBuilder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[剑指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 }
以上是关于[剑指Offer][数组]数字在升序数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章
剑指offer(C++)-JZ53:数字在升序数组中出现的次数(算法-搜索算法)