Post

[LeetCode 66] Plus One

LeetCode 66 (Java)
[Plus One] 문제 풀이

[LeetCode 66] Plus One

문제 바로가기


Description


You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0’s.

Increment the large integer by one and return the resulting array of digits.


Example 1


  • Input: digits = [1,2,3]
  • Output: [1,2,4]
  • Explanation:
    • The array represents the integer 123.
    • Incrementing by one gives 123 + 1 = 124.
    • Thus, the result should be [1,2,4].


Example 2


  • Input: digits = [4,3,2,1]
  • Output: [4,3,2,2]
  • Explanation:
    • The array represents the integer 4321.
    • Incrementing by one gives 4321 + 1 = 4322.
    • Thus, the result should be [4,3,2,2].


Example 3


  • Input: digits = [9]
  • Output: [1,0]
  • Explanation:
    • The array represents the integer 9.
    • Incrementing by one gives 9 + 1 = 10.
    • Thus, the result should be [1,0].


Constraints


  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
  • digits does not contain any leading 0’s.







Code


내 제출


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.*;
import java.util.*;

class Solution {
    public int[] plusOne(int[] digits) {
        int n = digits.length; // testcase 길이

        for (int i = n - 1; i >= 0; --i) {
            ++digits[i];
            digits[i] %= 10;

            if (digits[i] != 0) { // 마지막 인덱스가 9가 아닌 경우
                return digits;
            }
        }

        // 마지막 인덱스가 9인 경우
        digits = new int[n + 1];
        digits[0] = 1;
        return digits;
    }
}


RuntimeMemory
0 ms42 MB


다른 풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
    public int[] plusOne(int[] digits) {
        List<Integer> ans = new ArrayList<>();

        int carry = 1;

        for(int i=digits.length-1;i>=0;i--){
            int sum = digits[i]+carry;
            ans.add(sum%10);
            carry = sum/10;
        }

        if(carry>0){
            ans.add(carry);
        }

        Collections.reverse(ans);

        int[] finA = new int[ans.size()];
        int st = 0;
        for(int num:ans){
            finA[st++] = num;
        }

        return finA;
    }
}


Reference


  • https://github.com/doocs/leetcode/blob/main/solution/0000-0099/0066.Plus%20One/Solution.java
This post is licensed under CC BY 4.0 by the author.