diff options
author | 3gg <3gg@shellblade.net> | 2025-02-05 18:36:31 -0800 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2025-02-05 18:36:31 -0800 |
commit | 4689e4e80b479be25f7557d05818f5caa723aafa (patch) | |
tree | 4df25811fe2a9a15b401375178da6537f4b6063f /top-interview-questions/easy/array/07_plus_one.cc |
Diffstat (limited to 'top-interview-questions/easy/array/07_plus_one.cc')
-rw-r--r-- | top-interview-questions/easy/array/07_plus_one.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/top-interview-questions/easy/array/07_plus_one.cc b/top-interview-questions/easy/array/07_plus_one.cc new file mode 100644 index 0000000..05c7b21 --- /dev/null +++ b/top-interview-questions/easy/array/07_plus_one.cc | |||
@@ -0,0 +1,25 @@ | |||
1 | class Solution { | ||
2 | public: | ||
3 | vector<int> plusOne(vector<int>& digits) { | ||
4 | int carry = 1; | ||
5 | |||
6 | for (int i = digits.size()-1; (i >= 0) && (carry == 1); --i) { | ||
7 | const int sum = digits[i] + carry; | ||
8 | digits[i] = sum % 10; | ||
9 | carry = (sum >= 10) ? 1 : 0; | ||
10 | } | ||
11 | |||
12 | if (carry == 1) { // Overflow. | ||
13 | digits.resize(digits.size() + 1); | ||
14 | |||
15 | // Shift right. | ||
16 | for (size_t i = digits.size()-1; i > 0; --i) { | ||
17 | digits[i] = digits[i-1]; | ||
18 | } | ||
19 | |||
20 | digits[0] = 1; | ||
21 | } | ||
22 | |||
23 | return digits; | ||
24 | } | ||
25 | }; | ||