2025年10月8日 星期三

找出陣列的最大值

今日練習的題目是 2300. Successful Pairs of Spells and Potions,一般來說可以利用 Binary Search 來解答,效率是 $O(m*log(m)*n)$,不過這題目因為數量不大,所以可以建立一個跟最大值一樣大的陣列,用來查表快速解答 $O(m + n)$ 相當高效,隨便寫一下都可以 Beats 99%,不過缺點是會使用多一些記憶體,剛好題目的數量不大,所以程式還不至於爆掉,而我只是要提一下幾種程式語言可以怎麼取陣列最大值而已。

C++ 借助 C++20 的 ranges 的 max_element 或是 C++17 的 max_element

int max_potion = *ranges::max_element(potions);

Python3 內建用法簡單直白

maxPotion = max(potions)

Go 借助 slices 套件

maxPotion := slices.Max(potions)

Rust 搭配 match arm 使用 Vec< i32 > 的 Trait Iterator 中的 max() 函式,這樣寫最對味。

let max_potion = match potions.iter().max() {
    Some(&val) => val as usize,
    None => return vec![0; spells.len()],
};

沒有留言: