zoukankan      html  css  js  c++  java
  • leetcode 287 rust

    题目

    编程语言

    rust

    注意点

    原地置换法:原地置换的总体思路就是将我们的元素放到他的索引位置。我们可以这样理解,每个人都有自己的位置,我们需要和别人调换回到属于自己的位置,调换之后,如果发现我们的位置上有人了,则返回。算法来源

    代码

    pub fn find_duplicate(nums: Vec<i32>) -> i32 {
        let mut nums2 = nums.clone();
        for i in 0..nums2.len() {
            while nums2[i] != i as i32 {
                if nums2[i] == nums2[nums2[i] as usize] {
                    return nums2[i];
                }
                let temp = nums2[i] as usize;
                nums2[i] = nums2[temp]; 
                nums2[temp] = temp as i32;
            }
        }
        return -1;
    }
    

    测试

    #[cfg(test)]
    mod tests{
        use super::*;
        #[test]
        fn test_1(){
            assert_eq!(find_duplicate(vec![1,3,4,2,2]),2);
        }
        #[test]
        fn test_2(){
            assert_eq!(find_duplicate(vec![3,1,3,4,2]),3);
        }
        #[test]
        fn test_3(){
            assert_eq!(find_duplicate(vec![1,1]),1);
        }
        #[test]
        fn test_4(){
            assert_eq!(find_duplicate(vec![1,1,2]),1);
        }
    }
    
  • 相关阅读:
    11111
    单例-Singleton-03
    单例-Singleton-02
    单例-Singleton-01
    load和initialize
    OC中的static-01
    GCD-06
    GCD-05
    GCD-03
    UIView-01
  • 原文地址:https://www.cnblogs.com/GeniusOfCX/p/14631732.html
Copyright © 2011-2022 走看看