728x90
반응형
주어진 배열에서 세 번째로 큰 수를 찾는 문제입니다. 주어진 배열에서 중복된 수는 무시하고, 유일한 값만 고려합니다.
문제 설명:
주어진 배열 nums에서 세 번째로 큰 값을 찾습니다. 중복된 값은 무시하고, 유일한 값만 고려합니다.
예를 들어, 입력 배열 nums가 다음과 같다면:
[3, 2, 1]
여기서 세 번째로 큰 값을 찾으면 1이 됩니다.
또 다른 예로, 입력 배열 nums가 다음과 같다면:
[1, 2]
여기서 세 번째로 큰 값을 찾으면 2가 됩니다. 첫 번째로 큰 값과 두 번째로 큰 값은 중복된 수를 무시하고 계산합니다.
노트:
배열 nums에는 최소한 세 개의 유일한 값이 포함되어야 합니다. 적어도 세 번째로 큰 값을 찾을 수 있어야 합니다.
이 문제를 해결하는 방법으로는 배열을 한 번 순회하면서 최대값을 갱신하고, 최대값들을 저장하는 변수를 사용하면 됩니다.
public int ThirdMax(int[] nums) {
int? firstMax = null;
int? secondMax = null;
int? thirdMax = null;
foreach (int num in nums) {
if (num == firstMax || num == secondMax || num == thirdMax) {
continue; // 중복된 값은 무시
}
if (firstMax == null || num > firstMax) {
thirdMax = secondMax;
secondMax = firstMax;
firstMax = num;
} else if (secondMax == null || num > secondMax) {
thirdMax = secondMax;
secondMax = num;
} else if (thirdMax == null || num > thirdMax) {
thirdMax = num;
}
}
// 만약 세 번째로 큰 값이 존재하지 않으면, 첫 번째로 큰 값을 반환
return thirdMax ?? firstMax ?? 0;
}
int? (nullable int)를 사용하여 값이 없을 수 있는 경우를 처리하고, 중복된 값은 무시합니다. 이로써 32비트 정수 범위 내에서 세 번째로 큰 값을 찾는 문제를 해결합니다.
728x90
반응형
'Leetcode' 카테고리의 다른 글
70. Climbing Stairs (0) | 2023.11.03 |
---|---|
101. Symmetric Tree (0) | 2023.11.01 |
283. Move Zeroes (0) | 2023.10.31 |
303. Range Sum Query - Immutable (0) | 2023.10.31 |
94. Binary Tree Inorder Traversal (0) | 2023.10.30 |