본문 바로가기

Algorithm/Math

(Rust) - LeetCode (Easy) : 1979. Find Greatest Common Divisor of Array

반응형

https://leetcode.com/problems/find-greatest-common-divisor-of-array/description/

gcd를 사용해본 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

유클리드 호제법으로 gcd를 반환할 함수를 구현합니다. 시간복잡도는 O(logN)을 가집니다.

📔 풀이과정

nums의 최댓값, 최솟값을 뽑아 값이 있는 경우 max_num, min_num변수에 저장합니다.

📑 시간 복잡도

O(logN)

📑 공간 복잡도

O(N)

📔 정답 출력 | 반환

 값이 있는 경우 두 변수의 gcd값을 반환하며 아닌 경우 아무의미 없는 값 0을 반환합니다. if let문은 해당 분기 외의 조건에도 반환값을 강제하기 때문입니다.


📕 Code

📔 Rust

use std::cmp::max;

impl Solution {
    pub fn gcd(a: i32, b: i32) -> i32 {
        if (b == 0) {
            return a;
        }
        return Self::gcd(b, a % b);
    }

    pub fn find_gcd(nums: Vec<i32>) -> i32 {
        if let (Some(&max_num), Some(&min_num)) = (nums.iter().max(), nums.iter().min()) {
            return Self::gcd(max_num, min_num);
        } else {
            return 0;
        }
    }
}

 


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.