Plus One Solution

 avatar
unknown
c_cpp
2 years ago
1.0 kB
4
Indexable
class Solution {
public:
    vector<int> reverse(vector<int> nums) {
        int i = 0, j = nums.size() - 1;
        
        while (i < j) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
            i++;
            j--;
        }
        
        return nums;
    }
    
    vector<int> plusOne(vector<int>& digits) {
        vector<int> reversedArray = reverse(digits);
        int carr = 1;
        
        for (int i = 0; i < reversedArray.size(); i++) {
            if (reversedArray[i] + carr > 9) {
                reversedArray[i] = 0;
                carr = 1;
            } else {
                reversedArray[i] += carr;
                carr = 0; // No more carr since the sum is < 9 (Nothing would be added to further digits)
                break; // Since we no longer need to add any more digit
            }
        }
        
        if (carr) {
            reversedArray.push_back(1);
        }
        
        return reverse(reversedArray);
    }
};
Editor is loading...