1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#![allow(dead_code)] use std::collections::HashMap; pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> { let mut map = HashMap::new(); let mut rets = vec![]; for (i, num) in nums.iter().enumerate() { if let Some(&j) = map.get(&(target - num)) { rets.push(j); rets.push(i as i32); break; } else { map.insert(num, i as i32); } } rets } #[cfg(test)] mod tests { use super::*; #[test] fn test1() { assert_eq!(two_sum(vec![2, 7, 11, 15], 9), vec![0, 1]); } }