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

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

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

struct Solution{

}

impl Solution {
    fn new() -> Self {
        Solution{}
    }

    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * 
        * @param nums int整型一维数组 
        * @param k int整型 
        * @return int整型
    */
    pub fn GetNumberOfK(&self, nums: Vec<i32>, k: i32) -> i32 {
        let mut l = 0 as i32;
        let mut r = nums.len() as i32 - 1;
        let mut pos: i32 = -1;
        while l <= r {
            let mut mid = l + (r - l)/2;
            if nums[mid as usize] == k {
                pos = mid;
                break;
            } else if nums[mid as usize] > k {
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }
        if pos == -1 {
            return 0 as i32;
        }
        let mut cnt: i32 = 1;
        l = pos - 1;
        r = pos + 1;
        while l >= 0 {
            if nums[l as usize] == k {
                cnt += 1;
            } else {
                break;
            }
            l-=1;
        }
        while r < nums.len() as i32 {
            if nums[r as usize] == k {
                cnt += 1;
            } else {
                break;
            }
            r+=1;
        }
        return cnt;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务