summaryrefslogtreecommitdiff
path: root/top-interview-questions/easy/array/07_plus_one.cc
diff options
context:
space:
mode:
Diffstat (limited to 'top-interview-questions/easy/array/07_plus_one.cc')
-rw-r--r--top-interview-questions/easy/array/07_plus_one.cc25
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 @@
1class Solution {
2public:
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};