본문 바로가기
알고리즘 문제풀이/leetcode

[leetcode 66] Plus One

by m2162003 2020. 11. 19.

Given a non-empty array of decimal digits representing a non-negative integer, increment one to the integer.

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contains a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.

 

Example 1:

Input: digits = [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123.

Example 2:

Input: digits = [4,3,2,1] Output: [4,3,2,2] Explanation: The array represents the integer 4321.

Example 3:

Input: digits = [0] Output: [1]

 

Constraints:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

문제 풀이:

난이도 easy

마지막 숫자에 1을 더한 값을 리턴한다. 배열의 각 요소는 각 자리를 뜻하므로 9 + 1 이면 10 아니라 0이고 1이 앞 자리로 넘어간다. carry 개념

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        
        int n = digits.size();
        
        int c = 1;
        for(int i=n-1; i>-1; i--){
            
            digits[i] += c;
            if(digits[i] == 10){
                digits[i] = 0;
                c = 1;
            }else {
                c = 0;
                break;
            }
        }

        if(c == 1){
            digits.push_back(1);
            reverse(digits.begin(), digits.end());
        }
        
        return digits;
    }
};

'알고리즘 문제풀이 > leetcode' 카테고리의 다른 글

[leetcode 125] Valid Palindrome  (0) 2020.11.20
[leetcode 118] Pascal's Triangle  (0) 2020.11.19
[leetcode 88] Merge Sorted Array  (0) 2020.11.19
[leetcode 69] Sqrt(x)  (0) 2020.11.18
[leetcode 50] Pow(x, n)  (0) 2020.11.18

댓글