반응형
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;
}
}
}
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Math' 카테고리의 다른 글
(Python3) - LeetCode (Medium) : 2683. Neighboring Bitwise XOR (0) | 2025.01.17 |
---|---|
(Python3) - 프로그래머스(코딩테스트 입문) : 종이 자르기 (0) | 2024.11.03 |
(Python3) - 프로그래머스(코딩테스트 입문) : 세균 증식 (0) | 2024.10.29 |
(C++) - LeetCode (easy) 1518. Water Bottles (0) | 2024.04.17 |
(C++) - LeetCode (easy) 1207. Unique Number of Occurrences (0) | 2023.12.07 |