【study】rust学习-1

【study】Rust学习 day1

已经简单看了看语法,边通过刷题边熟悉语法以及数据结构的用法。

1. 键值对的使用

1.1 导入类型

1
2
3
// 根据情况使用
use std::collections::HashMap;
use std::collections::BTreeMap;

HashMapBTreeMap 由名字可以看出底层实现。

HashMap BTreeMap
底层实现 哈希表 平衡二叉树
CRUD复杂度 O(1) O($\log n$)
是否有序 有序 乱序

1.2 使用

1. 两数之和,以leetcode这道题为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Solution;
use std::collections::HashMap;
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
let mut map = HashMap::new();
for (i, &x) in nums.iter().enumerate() {
if let Some(&value) = map.get(&(target - x)) {
return vec![i as i32, value as i32];
}
map.insert(x, i);
}
vec![]
}
}
  • map 后序要进行插入操作,所以要是可变变量

  • 判断一个值是否在mapvalue 中。执行顺序如下,先map.get(&(key)),如果有值,则传给value并通过Some(&value)解引用。否则为None

    1
    2
    3
    if let Some(&value) = map.get(&(key)) {

    }
  • Vec的索引类型是usize,所以在第8行需要进行类型转换。

  • map[&key]也可以取值的,但是如果key不存在则会panic


【study】rust学习-1
https://promisewang.github.io/post/bb4b8715.html
作者
Promise
发布于
2025年9月13日
许可协议