[LeetCode] Third Maximum Number

아르당·2일 전

LeetCode

목록 보기
88/94
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

정수 배열 nums가 주어졌을 때, 배열에서 서로 다른 숫자 중 세 번째로 큰 숫자를 반환해라. 세 번째로 큰 숫자가 존재하지 않으면, 배열에서 가장 큰 숫자를 반환해라.

Example

#1
Input: nums = [3, 2, 1]
Output: 1
Explanation:
첫 번째 뚜렷한 최댓값은 3이다.
두 번째 뚜렷한 최댓값은 2이다.
세 번째 뚜렷한 최댓값은 1이다.

#2
Input: nums = [1, 2]
Output: 2
Explanation:
첫 번째 뚜렷한 최댓값은 2이다.
두 번째 뚜렷한 최댓값은 1이다.
세 번째 뚜렷한 최댓값은 존재하지 않아서, 최댓값 2를 대신 반환한다.

#3
Input: nums = [2, 2, 3, 1]
Output: 1
Explanation:
첫 번째 뚜렷한 최댓값은 3이다.
두 번째 뚜렷한 최댓값은 2이다(두 개의 2는 값이 같으므로 함께 센다).
세 번째 뚜렷한 최댓값은 1이다.

Constraints

  • 1 <= nums.length <= 10^4
  • -2^31 <= nums[i] <= 2^31 - 1

Solved

class Solution {
    public int thirdMax(int[] nums) {
        long max = Long.MIN_VALUE;
        long secoundMax = Long.MIN_VALUE;
        long thirdMax = Long.MIN_VALUE;
        
        for(int x : nums){
            if(x > max){
                thirdMax = secoundMax;
                secoundMax = max;
                max = x;

            }else if(x > secoundMax && max != x){
                thirdMax = secoundMax;
                secoundMax = x;

            }else if(x > thirdMax && secoundMax != x && max != x){
                thirdMax = x;
            }
        }
        if(thirdMax != Long.MIN_VALUE)
            return (int)thirdMax;
        else
            return (int) max;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글