当前位置: 首页 > article >正文

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

1. 目的

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

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

2. 题目地址

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

3. 创建工程

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/

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++ 代码

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 的求解: 两重循环分别遍历数组。


http://www.kler.cn/a/444764.html

相关文章:

  • 曲面的共形变换
  • HTML5(二)——canvas元素
  • 【设计与实现】基于springboot的房屋租赁系统
  • vue项目中使用ag-grid
  • springboot 配置Kafka 关闭自启动连接
  • 大数据-255 离线数仓 - Atlas 数据仓库元数据管理 数据血缘关系 元数据
  • 如何更好的对WebSocket的理解?应用场景?
  • 【自动化部署】Ansible Playbook 基础应用
  • 百度面试手撕 go context channel部分学习
  • 自动呼入机器人如何实现自动化学习?
  • 代码随想录-笔记-其七
  • 【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
  • 深度学习基础--自定义函数对数据集进行图像分类,以车牌号识别为例
  • MCU驱动使用
  • MFC 应用程序语言切换
  • #Java篇:java项目init和写接口流程步骤详细
  • UG NX二次开发(C#)-如何设置UGOpen的UF_CAM_geom_type_e枚举类型
  • Go语言封装Cron定时任务
  • 【c++丨STL】set/multiset的使用
  • 2025年NISP考试时间是什么时候?NISP要多少钱?NISP考试时间及费用超全解说!