1pub struct Solution;
21
22impl Solution {
23 pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
24 let mut state = std::collections::HashMap::with_capacity(nums.len());
25 for (i, n) in nums.iter().enumerate() {
26 if let Some(&v) = state.get(&(target - n)) {
27 if v != i {
28 return vec![v as i32, i as i32];
29 }
30 }
31 state.insert(n, i);
32 }
33 vec![]
34 }
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn test() {
43 let cases = vec![
44 (vec![], (vec![2,7,11,15], 91)),
45 (vec![0,1], (vec![2,7,11,15], 9)),
46 ];
47
48 for (expect, (nums, target)) in cases {
49 assert_eq!(expect, Solution::two_sum(nums, target));
50 }
51 }
52}