1小时放弃Rust(2): 两数之和

1. 目的

陈越姥姥说,ACM拿奖的人有两类,一类是 NOIP 搞了好几年的,另一类是大学才开始搞 ACM 但是专注度远超常人的人。

学习 Rust 大概也是需要高度的专注度。让我试一下 ACM 的入门题目 A+B 吧!

2. 题目地址

https://leetcode.cn/problems/two-sum/

3. 创建工程

bash 复制代码
cd ~/play/rust
cargo new two-sum
cd two-sum
nvim src/main.rs

4. 抄写暴力求解的答案

学习的第一步就是抄写标准答案, 并且这个解法还应当是不费脑子的。 循序渐进才符合认知。

https://leetcode.cn/problems/two-sum/solutions/2326193/dong-hua-cong-liang-shu-zhi-he-zhong-wo-0yvmj/

rust 复制代码
struct Solution;

impl Solution
{
    pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32>
    {
        for i in 0..nums.len()
        {
            for j in j+1..nums.len()
            {
                if nums[i] + nums[j] == target
                {
                    return vec![i as i32, j as i32];
                }
            }
        }
        unreachable!()
    }
}

fn main()
{
    let nums = vec![2, 7, 11, 16];
    let target = 9;

    let result = Solution::two_sum(nums, target);

    println!("{:?}", result);
}

struct Solution 是在干啥

定义了一个空的结构体 Solution。

impl Solution 是在干事

为结构体 Solution 定义方法或关联函数。

vec! 是啥

vec! 是一个宏, 用来快速创建一个 Vec<T>

unreachable!() 是在干啥

unreachable!() 是一个宏,用于标记程序中不可能到达的代码路径。如果运行到了它, 会触发一个运行时错误,并终止错误。

对应的 C++ 代码

cpp 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for (int i=0; i<nums.size(); i++)
        {
            for (int j=i+1; j<nums.size(); j++)
            {
                if (nums[i] + nums[j] == target)
                {
                    return {i, j};
                }
            }
        }
        return {};
    }
};

总结

好,不贪多,这次稍微接触练习了 rust 的 vec,用暴力方式做了 two-sum 的求解: 两重循环分别遍历数组。

相关推荐
SomeB1oody5 小时前
【Rust自学】4.2. 所有权规则、内存与分配
开发语言·后端·rust
SomeB1oody5 小时前
【Rust自学】4.5. 切片(Slice)
开发语言·后端·rust
编码浪子16 小时前
构建一个rust生产应用读书笔记6-拒绝无效订阅者02
开发语言·后端·rust
baiyu3317 小时前
1小时放弃Rust(1): Hello-World
rust
Source.Liu17 小时前
数据特性库 前言
rust·cad·num-traits
编码浪子17 小时前
构建一个rust生产应用读书笔记7-确认邮件1
数据库·rust·php
SomeB1oody17 小时前
【Rust自学】3.6. 控制流:循环
开发语言·后端·rust
Andrew_Ryan20 小时前
深入了解 Rust 核心开发团队:这些人如何塑造了世界上最安全的编程语言
rust
风无雨1 天前
【无标题】
笔记·学习·rust