0
点赞
收藏
分享

微信扫一扫

[数组]NC74 数字在升序数组中出现的次数-简单

​​NC74 数字在升序数组中出现的次数​​

知识点​​数组​​​​二分​​

描述

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

数据范围:,数组中每个元素的值满足 
要求:空间复杂度 ,时间复杂度 

示例1

输入:

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

返回值:

4

示例2

输入:

[1,3,4,5],6

返回值:

0

题解

暴力解法

略~

二分解法


#include <bits/stdc++.h>

using namespace std;

int GetNumberOfK(vector<int> data, int k)
{
if (data.size() == 0 || k < data.front() || k > data.back())
{
return 0;
}

int left = 0;
int right = data.size() - 1;
int len = 0;
int mid;
while (left <= right)
{
mid = (left + right) / 2;
if (data[mid] == k)
{
break;
}

if (k < data[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
int i = mid;
while (i >= left && data[i] == k)
{
len++;
i--;
}
i = mid + 1;
while (i <= right && data[i] == k)
{
len++;
i++;
}
return len;
}

举报

相关推荐

0 条评论