Skip to content

Commit 13c5aa6

Browse files
committed
another way
1 parent 34e3b0c commit 13c5aa6

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

leetcode_solved/leetcode_0066_Plus_One.cpp

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,23 @@ class Solution {
33
vector<int> plusOne(vector<int>& digits) {
44
int size = digits.size();
55
vector<int> ans;
6-
if(size == 1 && digits[0] == 0) {
7-
ans.push_back(1);
8-
return ans;
9-
}
10-
11-
long long raw = 0, base = 1;
6+
7+
int flag = 1; // 是否需要进位
128
for(int i = size - 1; i >= 0; i--) {
13-
raw += digits[i] * base;
14-
if(i != 0) // 防止 base 溢出
15-
base *= 10;
16-
}
17-
long long plusNum = raw + 1;
18-
vector<int> digit2;
19-
while(plusNum > 0) {
20-
digit2.push_back(plusNum % 10);
21-
plusNum /= 10;
22-
}
23-
24-
for(int i = digit2.size() - 1; i >= 0 ; i--) {
25-
ans.push_back(digit2[i]);
9+
if(flag == 1) {
10+
if(digits[i] + 1 > 10) {
11+
digits[i] = (digits[i] + 1) % 10;
12+
flag = 1;
13+
if(i == 0) {
14+
digits.insert(digits.begin(), 1);
15+
}
16+
} else {
17+
digits[i] += 1;
18+
flag = 0;
19+
}
20+
}
2621
}
2722

28-
return ans;
23+
return digits;
2924
}
3025
};

0 commit comments

Comments
 (0)