到今天也已經是第 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 的說明或是直接在下面提問喔~
今天在學校真的有夠忙害我這篇這麼水