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

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

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param k int整型 
     * @return int整型
     */
    int GetNumberOfK(vector<int>& nums, int k) {
        // write code here
        //找到k后 , 从左到右和从右到左把数统计 。  
        if(nums.size() == 1&& k == nums[0]){
            return  1  ; 
        }
        int i = 0 , j = nums.size()-1 ; 
        int num = 0 ; 

        while(i < j ){ // 当i小于j 。
            int mid = (i+j) /2 ; 
            if(nums[mid] > k ){
                j = mid - 1; 
            }else if( nums[mid] < k){
                i = mid +1  ; // 将数
            }else{
                int idx = mid ; 
                for(int t = idx ; nums[t] == k ; ++ t){
                    num ++ ; 
                }
                for(int tt = idx -1 ; nums[tt] == k ; --tt){
                    num++ ; 
                }
                return num ; 
            }
        }
        return 0 ; 
    }
};

全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务