Plus One - LeetCode

 

단순하게 배열을 숫자로 변환하고 +1 한 다음 다시 배열로 변환하는 방식의 경우 배열의 최대 길이가 100이기에 long의 범위를 넘어선다.

따라서 배열의 값들이 0~9 사이 이기 때문에 carry를 통해 계산을 처리하는 방식으로 진행한다.

class Solution {
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        List<Integer> result = new ArrayList<>();
        int carry = 1;

        for (int i = n - 1; i >= 0; i--) {
            int num = digits[i];
            if (num + carry >= 10) {
                result.add(num + carry - 10);
            } else {
                result.add(num + carry);
                carry = 0;
            }            
        }

        if (carry != 0) {
            result.add(carry);
        }

        int[] answer = new int[result.size()];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = result.get(answer.length - 1 - i);
        }

        return answer;
    }
}

'Algorithm > LeetCode' 카테고리의 다른 글

LeetCode 155 - Min Stack  (0) 2024.11.02
LeetCode 74 - Search a 2D Matrix  (1) 2024.10.30
LeetCode 198 - House Robber  (0) 2024.10.25
LeetCode 130 - Surrounded Regions  (0) 2024.10.22
LeetCode 433 - Minimum Genetic Mutation  (0) 2024.10.22

+ Recent posts