From 4689e4e80b479be25f7557d05818f5caa723aafa Mon Sep 17 00:00:00 2001
From: 3gg <3gg@shellblade.net>
Date: Wed, 5 Feb 2025 18:36:31 -0800
Subject: Initial commit.

---
 top-interview-questions/easy/array/07_plus_one.cc | 25 +++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 top-interview-questions/easy/array/07_plus_one.cc

(limited to 'top-interview-questions/easy/array/07_plus_one.cc')

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 @@
+class Solution {
+public:
+    vector<int> plusOne(vector<int>& digits) {
+        int carry = 1;
+
+        for (int i = digits.size()-1; (i >= 0) && (carry == 1); --i) {
+            const int sum = digits[i] + carry;
+            digits[i] = sum % 10;
+            carry     = (sum >= 10) ? 1 : 0;
+        }
+
+        if (carry == 1) { // Overflow.
+            digits.resize(digits.size() + 1);
+
+            // Shift right.
+            for (size_t i = digits.size()-1; i > 0; --i) {
+                digits[i] = digits[i-1];
+            }
+
+            digits[0] = 1;
+        }
+
+        return digits;
+    }
+};
-- 
cgit v1.2.3