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

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

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
        int len = nums.size();
        int res_num = 0;
        int mid = len/2; //复杂度要求logn,所有不能整个一起遍历,要用二分查找

        int i = 0;
        int j = len-1;
        int flag = -1;
        while(i<=j)
        {
            if(nums[mid]>k)
            {
                j = mid - 1;
            }
            else if(nums[mid]<k)
            {
                i = mid + 1;
            }
            else 
            {
                flag = mid;
                break;
            }
            mid = (i+j)/2;
        }
        if(flag != -1)
        {
            for(int z = mid;z>=0;z--)
            {
                if(nums[z]==k)
                {
                    res_num++;
                }
            }
            for(int z = mid+1;z<len;z++)
            {
                if(nums[z]==k)
                {
                    res_num++;
                }
            }
        }
        return res_num;
    }
};

全部评论

相关推荐

07-24 19:01
门头沟学院 Java
后天笔试,又要开始做题了
Sairus:明天10:00笔试
投递京东等公司10个岗位
点赞 评论 收藏
分享
07-23 11:37
延安大学 C++
绷不住了,晚上十点发拒信,是还在加班吗这样一想挂了好像也没什么不好
码农索隆:这个都是真人发嘛,会用到机器人定时发嘛
点赞 评论 收藏
分享
07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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