https://leetcode.com/problems/plus-one/description/

코드설명

구현(Implementation)을 활용합니다.

 

[9, 9, 9] 가 주어졌다고 가정해봅시다.

맨 뒤에서부터 1씩 더해보며, 10이 미만이라면 더하고 바로 반환하면 됩니다.

만약, 배열 index가 0 이 될떄까지 return 되지 않는다면,

이미 뒤 모든 부분이 0 인것을 알 수 있습니다.

그러므로, 1 0 0 0 으로 반환하면 됩니다.

 

물론, 이 문제의 경우 각 숫자값을 실제로 숫자로 바꾼뒤 처리하는것도 가능하겠지만, 

아래와 같이 처리함으로써 매우 간단하게 처리할 수 잇습니다.

 

만약 1 이 더해지는게 아니라, 1~9 까지의 숫자가 더해진다고 가정해보더라도, 이와 같은 방식이 숫자의 배열 크기만큼 연산만 하면 되므로 더 빠를 것 입니다.

코드

class Solution {
    public int[] plusOne(int[] digits) {
        for(int i=digits.length - 1; i>=0; i--){
            if(digits[i] + 1 != 10){
                digits[i] += 1;
                return digits;
            }
            digits[i] = 0;
        }
        

        int[] newDigits = new int[digits.length + 1];
        newDigits[0] = 1;
        // if(digits[0] == 0){
        //     newDigits[0] = 1;
        //     for(int i=1; i<digits.length; i++){
        //         newDigits[i] = digits[i];
        //     }
        // }
        return newDigits;
    }
}

+ Recent posts