[LeetCode] Summary Ranges

아르당·2025년 10월 31일

LeetCode

목록 보기
56/68
post-thumbnail

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

Problem

정렬된 고유한 정수 배열 nums가 주어진다.

범위 [a, b]는 a부터 b까지(포함) 모든 정수이다.

배열의 모든 숫자를 정확히 포함하는 범위의 가장 작은 정렬된 목록을 반환한다. 즉, nums의 각 요소는 범위 중 하나에만 포함되며, x가 범위 중 하나에만 포함되고 nums에는 포함되지 않는 정수 x는 존재하지 않는다.

목록의 각 범위 [a, b]는 다음과 같이 출력되어야 한다.

  • "a->b" if a != b
  • "a" if a == b

Example

#1
Input: nums = [0, 1, 2, 4, 5, 7]
Output: ["0->2", "4->5", "7"]

#2
Input: nums = [0, 2, 3, 4, 6, 8, 9]
Output: ["0", "2->4", "6", "8->9"]

Constraints

  • 0 <= nums.length <= 20
  • -2^31 <= nums[i] <= 2^31 - 1
  • nums의 모든 값은 고유하다.
  • nums는 오름차순으로 정렬된다.

Solved

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> result = new ArrayList<>();

        if(nums.length == 0) return result;

        int start = nums[0];

        for(int i = 1; i <= nums.length; i++){
            if(i == nums.length || nums[i] != nums[i - 1] + 1){
                if(start == nums[i - 1]){
                    result.add(String.valueOf(start));
                }else{
                    result.add(start + "->" + nums[i - 1]);
                }

                if(i < nums.length) start = nums[i];
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글