Appearance
每天一道Rust-LeetCode(2019-11-25)
坚持每天一道题,刷题学习Rust.
题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
思路: 一遍遍历,建立一个值=>下标的map 同时查找历史中是否有满足的,有的话输出 题中说了只有一对
解题过程
rust
use std::collections::HashMap;
struct Solution {}
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
let mut m = HashMap::new();
for n in nums.iter().enumerate() {
let t2 = target - *n.1;
if let Some(n2) = m.get(&t2) {
return vec![*n2 as i32, n.0 as i32];
}
m.insert(n.1, n.0);
}
Vec::new()
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test() {
assert_eq!(Solution::two_sum(vec![2, 7, 11, 15], 9), vec![0, 1]);
}
}
一点感悟
其他
欢迎关注我的github,本项目文章所有代码都可以找到.