• leetcode 34 rust


    1.题目

    2.编程语言

    rust

    3.注意点

    let mut vec = vec![index]

    index 是 usize类型

    vec.len() 是 usize类型

    4.代码

    pub fn search_range(nums: Vec<i32>, target: i32) -> Vec<i32> {
        let lower = lower_bound(&nums,target);
        let upper = upper_bound(&nums,target);
        if lower > upper {
            return vec![-1,-1];
        }
        vec![lower,upper]
    }
    pub fn lower_bound(nums:&Vec<i32>,target:i32) -> i32{
        let mut left = 0_i32;
        let mut right = (nums.len() as i32) - 1;
        let mut mid;
        while left <= right {
            mid = left + ((right - left) >> 1);
            match target.cmp(&nums[mid as usize]){
                std::cmp::Ordering::Less | std::cmp::Ordering::Equal => right = mid - 1,
                std::cmp::Ordering::Greater => left = mid + 1,
            }
        }
        left
    }
    pub fn upper_bound(nums:&Vec<i32>,target:i32) -> i32{
        let mut left = 0_i32;
        let mut right = (nums.len() as i32) - 1;
        let mut mid ;
        while left <= right {
            mid = left + ((right - left) >> 1);
            match target.cmp(&nums[mid as usize]){
                std::cmp::Ordering::Less => right = mid - 1,
                std::cmp::Ordering::Greater | std::cmp::Ordering::Equal => left = mid + 1,
            }
        }
        right
    }
    

    5.测试

    #[cfg(test)]
    mod tests{
        use super::*;
        #[test]
        fn test_null(){
            assert_eq!((search_range(vec![],0)),vec![-1,-1]);
        }
        #[test]
        fn test_exist(){
            assert_eq!((search_range(vec![5,7,7,8,8,10],8)),vec![3,4]);
        }
        #[test]
        fn test_not_exist(){
            assert_eq!((search_range(vec![5,7,7,8,8,10],6)),vec![-1,-1]);
        }
    }
    
  • 相关阅读:
    简单记录下springboot+jms+activemq
    简单记录下RestTemplate 中postForObject调用例子
    vue+springboot后台实现页面按钮权限
    发送短信功能
    drf
    drf
    drf
    drf
    drf
    drf
  • 原文地址:https://www.cnblogs.com/GeniusOfCX/p/14605392.html
Copyright © 2020-2023  润新知