首页 > 试题广场 >

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

[编程题]数字在升序数组中出现的次数
  • 热度指数:605264 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数

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

输入

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

输出

4
示例2

输入

[1,3,4,5],6

输出

0
头像 牛客题解官
发表于 2020-06-01 15:10:08
精华题解 题目的主要信息: 给定一个长度为n的非降序数组和一个数字k,求k在数组中出现的次数 举一反三: 学习完本题的思路你可以解决如下题目: JZ11. 旋转数组的最小数字 方法:二分法(推荐使用) 知识点:分治 分治即“分而治之”,“分”指的是将一个大而复杂的问题划分成多个性质相同但是规模更小的子问题 展开全文
头像 LaN666
发表于 2021-06-22 22:21:26
精华题解 37、数字在升序数组中出现的次数 解题思路: 题目说的在升序数组找到一个目标,然后统计这个目标出现的次数,我们要好好利用升序数组这个条件。 有了这个条件,我们就可以算出这个目标值的左边界还有右边界,然后取两者之差即可统计出这个目标出现的次数。 因为我们要找到目标值的左边界和右边界,我们很容易能想到用 展开全文
头像 江南好___
发表于 2021-06-23 13:55:47
精华题解 描述 题目描述 统计一个数字在升序数组中出现的次数。 示例 输入:[1,2,3,3,3,3,4,5],3 返回值:4引言 看到有序数组,就要立马想到用二分查找,一般都能解决问题并且优化时间复杂度 知识点:数组,二分法难度:⭐⭐ 题解 解题思路 二分查找法,获取目标值的前后下标,即获取目标值在数组中 展开全文
头像 未来0116
发表于 2021-07-18 15:52:29
精华题解 一.题目描述NC74数字在升序数组中出现的次数题目链接:https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=188&&tqId=38596&rp=1&ru=/activity/ 展开全文
头像 牛客500979850号
发表于 2021-07-15 12:29:48
精华题解 方法一: 暴力,从头开始找到第一个值为k的元素,再计算连续的k的个数即可。缺点:没有利用好有序数组的特性。 代码如下: class Solution { public: int GetNumberOfK(vector<int> data ,int k) { i 展开全文
头像 2019113916
发表于 2021-07-18 20:08:29
精华题解 方法一:暴力 1.结题思路 暴力法,遍历数组,统计元素出现次数并输出 2.解法 遍历vector数组统计元素出现次数即可 3.具体代码 int GetNumberOfK(vector<int> data ,int k) { int cn=0; for(vector< 展开全文
头像 2019113913
发表于 2021-07-18 01:38:45
精华题解 题意思路:统计一个数字在升序数组中出现的次数。 方法一:暴力枚举题意很简单,寻找一个数字的出现次数,一个朴素的想法就是暴力一边数组中这个数字的出现次数 复杂度分析 时间复杂度:O(N),N数组的长度,遍历数组; 空间复杂度:O(1),未开辟新空间. class Solution { public: 展开全文
头像 Gemini48
发表于 2021-07-15 14:34:45
精华题解 解法一:暴力 在一个数组中寻早某个元素或者统计其出现的次数 显而易见的方法是暴力解法 循环枚举数组元素,如果有找到目标值K,加入计数器 返回计数器数值即可 Java参考代码: public class Solution { public int GetNumberOfK(int [] a 展开全文
头像 NumPy
发表于 2021-06-22 18:20:01
精华题解 一、题目描述 JZ37数字在升序数组中出现的次数题目大意:找到指定数字在升序数组中出现的次数注意审题:升序数组 二、算法1(暴力遍历) 算法思路 1.总体思路:直接遍历一次数组,当遇到指定数字时计数即可2.这种方法虽然直观,但是并没有用上题目中提供的升序这一信息,因此一般不是最优解 代码实现(C++ 展开全文
头像 一叶浮尘
发表于 2019-08-21 08:54:24
统计一个数字在排序数组中出现的次数。 这道题目思路挺简单的,就是先二叉搜索找一下这个元素的位置,然后再开始遍历搜索一下。本来想自己写一个二叉搜索函数的,但是转念一下java中有排序,还是用一下吧,这样代码就简洁很多。 import java.util.Arrays; public class So 展开全文
头像 青春期不醒症患者
发表于 2019-09-05 09:14:21
利用c++标准库,二分查找,O(logn)复杂度。 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { auto l = lower_bound(data.begin(), da 展开全文
头像 一颗闪闪发亮的马路星
发表于 2020-02-13 20:02:09
题目描述统计一个数字在排序数组中出现的次数 看到这题的第一反应就是暴力求解,当然了,这不失为一种可行的方法,但是大多数情况下,暴力求解会因为速度限制而过不了testcases,所以我们需要进行优化。而这题里有一个重点,那就是 排序 ,我们就可以立马联想到二分法求解,这样我们的速度就会变成O(nlog 展开全文
头像 常喝水
发表于 2019-12-25 16:17:55
一种投机取巧的思想:因为data中都是整数,利用二分法搜索k-0.5和k+0.5这两个数应该插入的位置,然后相减即可。注意是start <= endclass Solution: def GetNumberOfK(self, data, k): # write code he 展开全文
头像 嘤嘤嘤?啊哈
发表于 2020-05-25 11:50:09
二分法 找到k的位置mid,然后k必然在left和right之间,遍历即可 public class Solution { public int GetNumberOfK(int [] array , int k) { if(array==null||array.length= 展开全文
头像 中工升达预备毕业生
发表于 2019-11-29 20:58:17
二分的前提:有序(一提到有序,必须立马想到二分!) int[] array = {1, 2, 3, 3, 3, 5} k=3 => lowerIndex=2 upperIndex=5 int[] array = {1, 2, 4, 5} k=3 => lowerIndex=2 upper 展开全文
头像 Lynxx
发表于 2022-03-18 13:25:22
/** * @param data int整型一维数组 @param dataLen int data数组长度 @param k int整型 @return int整型 C语言声明定义全局变量请加上static,防止重复定义 */ int GetNumberOfK(int* data, int 展开全文
头像 云海翻腾
发表于 2021-10-16 14:38:33
用二分法分别找k-0.5和k+0.5应该插入的位置,位置距离即k的个数 class Solution { public: int bSearch(const vector<int> &vec, double k) { int beg = 0; int end 展开全文
头像 学无止境呀~
发表于 2019-09-10 10:33:01
37. 数字在排序数组中出现的次数 题目描述统计一个数字在排序数组中出现的次数。 思路思路一:暴力解,遍历数组并对比,一个循环,时间复杂度为思路二:由于数组是一个排序过的数组,所以可以用二分查找法,定位k的第一次出现位置和最后一次出现位置,时间复杂度为 代码实现暴力解,遍历数组 # -*- co 展开全文
头像 行舟201908241343644
发表于 2021-12-14 16:52:22
递归二分思路 class Solution: result = 0 def GetNumberOfK(self , data: List[int], k: int) -> int: m = int(len(data)/2) if len(data 展开全文

问题信息

难度:
1388条回答 122768浏览

热门推荐

通过挑战的用户

查看代码