Leetcode 刷题记录

date

2021-03-10

借鉴了 iosmanthus/leetcode-rust 的做法,主要用 Rust 来刷题。

1 - Two Sum

我居然以为是 a+b 真是太蠢了。

花了一些时间来回忆 rust 的语法,工作后技术直觉好了很多,之前觉得不容易理解的地方 (指 rust)现在觉得非常直观了。

// ref: https://github.com/iosmanthus/leetcode-rust/blob/master/two-sum/src/lib.rs

use std::collections::HashMap;

pub struct Solution;

impl Solution {
    pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
        let mut seen = HashMap::new();
        for (i, num) in nums.iter().enumerate() {
            if seen.contains_key(num) {
                return vec![seen[num], i as i32];
            } else {
                seen.insert(target - num, i as i32);
            }
        }
        panic!();
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn it_works() {
        assert_eq!(vec![1, 3], Solution::two_sum(vec![9, 1, 2, 4, 3], 5));
        assert_eq!(vec![0, 5], Solution::two_sum(vec![1, 4, 3, 4, 0, 5], 6));
    }
}