ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [알고리즘] Plus One
    알고리즘/배열 2021. 4. 19. 14:26

    Problem

    Key Point

    • 인덱스가 0보다 크거나 carry가 있을 때까지 루프를 돌린다.
    • (number + 1) % 10이 0인 경우 carry가 있는 것으로 판단한다.
    • 전체 요소들을 다 돌고 나서 carray가 있는 경우 배열의 크기+1의 새로운 배열을 만들고 리턴한다.

    Code

    public class PlusOne {
        public int[] solution(int[] digits) {
            int carry = 1;
            int index = digits.length - 1;
    
            while (index >= 0 && carry > 0) {
                digits[index] = (digits[index] + 1) % 10;
                if (digits[index] == 0) {
                    carry = 1;
                } else {
                    carry = 0;
                }
                --index;
            }
    
            if (carry == 1) {
                digits = new int[digits.length+1];
                digits[0] = 1;
            }
            return digits;
        }
        public static void main(String[] args) {
            //int[] digits = {9,9,9};
            int[] digits = {9,8,9};
            PlusOne plusOne = new PlusOne();
            int[] solution = plusOne.solution(digits);
            for (int i = 0; i < solution.length; i++) {
                System.out.println(solution[i]);
            }
        }
    }
    public int[] solution2(int[] digits) {
            for (int i = digits.length - 1; i >= 0; i--) {
                int d = (digits[i]+1) % 10;
                digits[i] = d;
                if (d != 0) {
                    break;
                }
            }
    
            return digits;
        }

    '알고리즘 > 배열' 카테고리의 다른 글

    [알고리즘] Merge Intervals (O)  (0) 2021.04.20
    [알고리즘] Meeting Rooms II  (0) 2021.04.20
    [알고리즘] Jewels And Stones  (0) 2021.04.20
    [알고리즘] License Key Formatting  (0) 2021.04.19
    [알고리즘] K Closest Points to Origin  (0) 2021.04.19

    댓글

Designed by Tistory.