两数之和 这个问题如果使用最简单的办法是暴力破解,它的运行时间会比较长,而且时间复杂度为O(n^2) 使用哈希表处理较为方便: 哈希表 通过`key`来锁定每一个值对应的下标,也就是说哈希表要设置成`hash(val,idx)`,索引在后,hash在前的方法,通过target 的方法来对照HashMap,查找对应的索引,将正在索引 的idx和HashMap对应的idx返回。 代码 blue 12345678910111213use std::collections::HashMap;impl Solution {pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> { let mut hash = HashMap::with_capacity(nums.len()); for (idx,&val) in nums.iter().enumerate() { if let Some(&find) = hash.get(&(target - val)) { return vec![find as i32,idx as i32] } hash.insert(val,idx); } panic!("Cannot find the solution"); }}