3

#yyds干货盘点# 解决剑指offer:数字在升序数组中出现的次数

 2 years ago
source link: https://blog.51cto.com/u_15488507/5328714
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

#yyds干货盘点# 解决剑指offer:数字在升序数组中出现的次数

原创

97的风 2022-05-25 09:22:11 博主文章分类:面试题 ©著作权

文章标签 数组 代码实现 空间复杂度 文章分类 Java 编程语言 阅读数209

1.简述:

给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数

数据范围:,数组中每个元素的值满足 

要求:空间复杂度 ,时间复杂度 

[1,2,3,3,3,3,4,5],3
[1,3,4,5],6

2.代码实现:

public class Solution {
//二分查找
private int bisearch(int[] data, double k){
int left = 0;
int right = data.length - 1;
//二分左右界
while(left <= right){
int mid = (left + right) / 2;
if(data[mid] < k)
left = mid + 1;
else if(data[mid] > k)
right = mid - 1;
}
return left;
}
public int GetNumberOfK(int [] array , int k) {
//分别查找k+0.5和k-0.5应该出现的位置,中间的部分就全是k
return bisearch(array, k + 0.5) - bisearch(array, k - 0.5);
}
}
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK