题解 |数字在升序数组中出现的次数

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

http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

解法一:暴力

  • 在一个数组中寻早某个元素或者统计其出现的次数
  • 显而易见的方法是暴力解法
  • 循环枚举数组元素,如果有找到目标值K,加入计数器
  • 返回计数器数值即可

Java参考代码:

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
       //暴力解法:遍历数组,找到目标数字计数器加一
        int ans=0;
        for(int i=0;i<array.length;i++){
            //找到目标数字计数器加一
            if(array[i]==k){
                ans++;
            }
        }
        //返回结果
        return ans;
    }
}

复杂度分析:

时间复杂度:O(N) N 为数组长度,最坏情况下暴力一遍数组。

空间复杂度:O(1) 常数空间的复杂度

解法二:二分查找

  • 经典的二分范围查找题目
  • 注意数组已经排序,可以想到用二分查找
  • 下界定义为:如果存在目标值,则指向第一个目标值,否则,如果不存在, 则指向大于目标值的第一个值。
  • 上界定义为:不管目标值存在与否,都指向大于目标值的第一个值。

图片说明

Java参考代码:

public class Solution {
    public int GetNumberOfK(int [] array , int k) 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论
方法是很巧妙,但是太难记了,不实用啊。。。
点赞 回复 分享
发布于 2022-02-25 21:05

相关推荐

不愿透露姓名的神秘牛友
06-27 18:22
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷面很爱看电影:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务