最近rust基础的一些知识学的差不多了,就想着练习一下,解决leetcode的算法问题无疑是一个不错的选择 ,可是想的很好,用rust写起来确实挺麻烦(我太菜了。。)。由于没有注意到一些细节,就导致了各种编译出错,emmmmmm
以下代码已通过leetcode
use std::collections::HashMap;
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
let mut v:Vec<i32> = Vec::new();
let mut temp = 0;
let mut sub = 0;
let mut map:HashMap<i32,i32> = HashMap::new();
for item in &nums{
temp = target - item;
if map.contains_key(&temp){
match map.get(&temp){
Some(value) => {
v.push(*value);
}
None => {
}
}
v.push(sub);
break;
}else{
map.insert(*item,sub);
}
sub += 1;
}
v
}
}
复制代码
在我刚开始写的时候,想不就是简单的两数之和嘛,随便拿下,于是,在Rust Playground (rust-lang.org)上面各种问题层出不穷,最要命的当然还是HashMap的一些用法问题,比如get方法,我原本以为就像js那样,get直接获取一个键的对应的值,
if map.contains_key(&temp){
v.push(map.get(&temp));
v.push(sub);
break;
}else{
map.insert(item,sub);
}
复制代码
可是一直报类型错误
然后我尝试解决这个问题,在查看资料时,发现了问题所在
Rust collections – Rust 基础教程 – 简单教程,简单编程 (twle.cn),get方法返回的是一个结构体,然后,问题就迎刃而解了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END