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 plusOne(vector& 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