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

    题目

    编程语言

    rust

    注意点

    leetcode15

    代码

    pub fn four_sum(nums: Vec<i32>, target: i32) -> Vec<Vec<i32>> {
        let mut res : Vec<Vec<i32>> = Vec::new();
        if nums.len() < 4 {
            return res;
        }
        let mut nums2 = nums.clone();
        nums2.sort();
        if nums2[0] > 0 {
            return res;
        }
        for i in 0..(nums2.len()-3) {
            if i > 0 && nums2[i] == nums2[i-1] {
                continue;
            }
            for j in (i+1)..(nums2.len()-2) {
                if j > i+1 && nums2[j] == nums2[j-1] {
                    continue;
                }
                let mut l = j+1;
                let mut r = nums2.len()-1;
                while l < r {
                    let sum = nums2[i] + nums2[j] + nums2[l] + nums2[r];
                    match sum.cmp(&target) {
                        std::cmp::Ordering::Equal => {
                            res.push(vec![nums2[i],nums2[j],nums2[l],nums2[r]]);
                            while l < r && nums2[l] == nums2[l+1] {
                                l = l + 1;
                            }
                            while l < r && nums2[r] == nums2[r-1] {
                                r = r - 1;
                            }
                            l = l + 1;
                            r = r - 1;
                        },
                        std::cmp::Ordering::Less => {
                            l = l + 1;
                        },
                        std::cmp::Ordering::Greater => {
                            r = r - 1;
                        }
                    }
                }
            }
        }
        res
    }
    

    测试

    #[cfg(test)]
    mod tests{
        use super::*;
        #[test]
        fn test_1(){
            assert_eq!(four_sum(vec![1,0,-1,0,-2,2],0),vec![vec![-2,-1,1,2],vec![-2,0,0,2],vec![-1,0,0,1]]);
        }
        #[test]
        fn test_2(){
            assert_eq!(four_sum(vec![],0),Vec::<Vec<i32>>::new());
        }
    }
    
  • 相关阅读:
    python3.6.4源码安装
    centos 6 中恢复删除的文件
    mysql5.6.8源码安装
    zookeeper集群搭建
    vmware 12中安装苹果系统
    docker被入侵后.............
    关于docker
    关于redis
    人生的价值 幸福感
    c# 泛型
  • 原文地址:https://www.cnblogs.com/GeniusOfCX/p/14630991.html
Copyright © 2011-2022 走看看