문제요약:
When given array of integers called digits, that presents decimal digits one by one,
return the result of the (number + 1) in the same format.
Digits[i] represent the ith digit of a number.
Digits are ordered from most significant to least significant in left-to-right order.
The digits does not contain any leading 0's.
제약:
1 <= digits.length <= 100
0 <= digits[i] <= 9
digits does not contain any leading 0's.
예제 1 입력. | 예제 1 출력. |
[4,3,2,1] | [4,3,2,2] |
예제 2 입력. | 예제 2 출력. |
[9] | [1,0] |
예제 3 입력. | 예제 3 출력. |
[1,6,9,9] | [1,7,0,0] |
정답코드:
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
29
30
31
32
33
34
35
36
37
|
class Solution {
public:
vector<int> plusOneDigit(vector<int>& digits, int nIdx)
{
if (digits[nIdx] < 9)
{
digits[nIdx]++;
return digits;
}
else if (digits[nIdx] == 9)
{
digits[nIdx] = 0;
if (nIdx == 0)
{
// create digits with extra digit.
// std::vector doesn't does not offer push_front interface.
digits.insert(digits.begin(), 1);
return digits;
}
else
{
nIdx--;
return plusOneDigit(digits, nIdx);
}
}
else
{
cout << "error case!!!" << endl;
return digits;
}
}
vector<int> plusOne(vector<int>& digits) {
return plusOneDigit(digits, digits.size()-1);
}
};
|
cs |
핵심 Idea:
1. Recursive function.
2. std::vector 는 push_front 인터페이스를 제공하지 않음.
v.insert(v.begin(), element); // 이런 식으로 사용하면 됨.
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] LeetCode 268번 "Missing Number" (C/C++) - Don 임베디드 (0) | 2022.10.05 |
---|---|
[알고리즘] LeetCode 252번 "Meeting Rooms" (C/C++) - Don 임베디드 (0) | 2022.09.30 |
[알고리즘] LeetCode 202번 "Happy Number" (C/C++) - Don 임베디드 (0) | 2022.09.29 |
[알고리즘] LeetCode 746번 "Min Cost Climbing Stairs" (C/C++) - Don 임베디드 (0) | 2022.09.28 |
[알고리즘] LeetCode 1번 "Two Sum" (C/C++) - Don 임베디드 (0) | 2022.09.27 |