[Day9] Review and Supplement by use Leetcode problem

到今天也已经是第 9 天了,讲了颇多东西但是可能没有这麽完整或明确,所以这篇主要拿来复习之前的内容。
这样应该会对刚学习这个语言的人比较有帮助。
或许有些人会略过这篇吧。
但是没关系,会跟看过不是一个档次的,需要学并且实际练题才能真正的知道如何使用,owob
标题英文不知道会不会比较多人看


首先是 1920. Build Array from Permutation

impl Solution {
    pub fn build_array(nums: Vec<i32>) -> Vec<i32> {
        let mut ans: Vec<i32> = Vec::new();
        for &i in nums.iter() {
            ans.push(nums[i as usize]);
        }
        ans
    }
}

这题应该相当简单,就只是直接去以阵列中的数字去指向他的数字
但需要注意的是 i as usize 可能这边我还没有讲解过。
i as usize 就是将 i 这个数字的型别直接转成 usize
但是要注意的是如果说 i64 as i8 那就会把他直接截断
也就是超过 i8 大小以後的都会不采用。
然後写的时候由於是使用 nums 里面的东西进行操作所以记得在 i 前面加一个 &


1929 Concatenation-Of-Array

impl Solution {
    pub fn get_concatenation(nums: Vec<i32>) -> Vec<i32> {
        let L = nums.len();
        let mut ans: Vec<i32> = Vec::new();
        for i in 0..L {
            ans.push(nums[i]);
        }
        for i in 0..L {
            ans.push(nums[i]);
        }
        ans
    }
}

这题的话我就直接使用 Vec 内建的 len 去做操作 len 顾名思义就是可以取得 Vec 里面的值的个数。
并且,如果你不想再定义一个 ans 的 Vec 出来,这题也能直接用 nums 去做操作

impl Solution {
    pub fn get_concatenation(mut nums: Vec<i32>) -> Vec<i32> {
        let L = nums.len();
        for i in 0..L {
            nums.push(nums[i]);
        }
        nums
    }
}

就像这样,需要注意的点只有 nums 传入的时候要改成 mut 型式改为可变。


1672 Richest-Customer-Wealth/

impl Solution {
    pub fn maximum_wealth(accounts: Vec<Vec<i32>>) -> i32 {
        let mut ans = 0;
        for i in 0..accounts.len() {
            let mut now = 0;
            for j in &accounts[i] {
                now += j;
            }
            ans = std::cmp::max(now, ans);
        }
        ans
    }
}

这边我们能够看到的是,题目示范了 二维阵列的表示法。
後面的话就是直接巢状回圈,只不过当初在写这题时就在思考, Rust 有没有像 C++ 一样的 max() 函数
找了找还真的有,
Docs
从这个就可以知道了
喔对,顺便讲一下, Rust 他几乎每个套件都有所谓的 Docs 基本上在 Github 上都会写这个的网址,就算没有也能直接在 doc.rust-lang.org 上找到你想用的套件的说明
包括 STD 库,所以这是一个非常好去学习的一个方式


impl ParkingSystem {

    fn new(big: i32, medium: i32, small: i32) -> Self {
        Self {
            inside: vec![big, medium, small],        
        }
    }
    
    fn add_car(&mut self, car_type: i32) -> bool {
        if self.inside[(car_type - 1) as usize] > 0 {
            self.inside[(car_type - 1) as usize] -= 1;
            return true;
        }
        return false;
    }
}

那这个就是今天的最後一题了,这个就跟我昨天所说的差不多, impl 的使用,那以上基本没有要注意的部分了,
如果还是不太了解这题怎麽写的可以回去看 impl 的说明或是直接在下面提问喔~

今天在学校真的有够忙害我这篇这麽水


<<:  Day13,先让我设定一下terminal(插曲)

>>:  [Day4] 实作 - 主角篇

Day20 Analysis of Algorithms(Ⅱ)

假如说今天有一个问题,有三种不同的解法,必须选择指数越小的,时间复杂度越小! 所以以下这个例子可以知...

[填坑日记] Android Studio plugin to Unity

要开发Android的App有许多的方法,目前以Android Studio与Unity最为多人使用...

[Day11] 排版的小孩子才做选择 ~ Grid 跟 Flex 我全都要!

本日文章没有前言XD 但没有前言真的有点怪怪的,总之本日文章想要分享过去我在使用 Grid 跟 Fl...

Angular建立专案(二)(Day17)

今天要来说明Angular专案内部各资料的功能 让我们从上往下讲吧 e2e: 端对端测试(end-t...

.NET Core第7天_MVC专案跟空专案创建出来比较_跟.net MVC专案做小比较

这是.net core 空专案创建出来预设项目 .NET Core MVC专案创建方式 可以看到预...