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

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

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

二分,找到k+0.5和k-0.5的位置,相减就是k的个数

#include <cstddef>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param k int整型 
     * @return int整型
     */

    int fun(vector<int>& nums, float k)
    {
        int left = 0;
        int right = nums.size()-1;
        while (left <= right) 
        {
            int mid = (left+right)/2;
            if(k > nums[mid])
            {
                left = mid+1;
            }
            else if (k < nums[mid]) 
            {
                right = mid-1;
            }
        }   
        return left;
    }


    int GetNumberOfK(vector<int>& nums, int k) {
        return fun(nums, k+0.5)-fun(nums, k-0.5) ;
    }
};

全部评论

相关推荐

否极泰来来来来:解约赔多少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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