首页 > 编程语言 > 详细

38 数字在排序数组中出现的次数

时间:2018-05-10 18:32:32      阅读:159      评论:0      收藏:0      [点我收藏+]

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

 

解法一:顺序遍历 O(n)

解法二:用二分的思想 找出第一个k 和最后一个k O(logn)

 

C++:

 1 class Solution {
 2 public:
 3     int GetNumberOfK(vector<int> data ,int k) {
 4         int first = binarySearch(data , k) ;
 5         int last = binarySearch(data , k+1) ;
 6         if (first == data.size() || data[first] != k)
 7             return 0 ;
 8         else 
 9             return last - first ;
10     }
11     
12     int binarySearch(vector<int> data ,int k) {
13         int left = 0 ;
14         int right = data.size() ;
15         while(left < right){
16             int mid = left + (right - left) / 2 ;
17             if (data[mid] >= k){
18                 right = mid ;
19             }else{
20                 left = mid + 1 ;
21             }
22         }
23         return left ;
24     }
25 };

 

38 数字在排序数组中出现的次数

原文:https://www.cnblogs.com/mengchunchen/p/9021023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!