Leetcode Plus One Problem Solution

In this Leetcode Plus One Problem Solution You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.

Increment the large integer by one and return the resulting array of digits.

Leetcode Plus One Problem Solution


Problem solution in Python.

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        digits = "".join([str(i) for i in digits])
        cal = str(int(digits)+1)
        return [int(i) for i in cal]

Problem solution in Java.

public int[] plusOne(int[] digits) {
        for(int i=digits.length-1; i>=0; i--){
            if(digits[i]!=9){
                digits[i]++;
                break;
            }
            if(i==0){
                digits = new int[digits.length+1];
                digits[0]=1;
                return digits;
            }
            digits[i]=(digits[i]+1)%10;
        }
        return digits;
    }


Problem solution in C++.

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int c = 1;
        for(int i = digits.size() - 1; i >= 0; i--) {
            digits[i] += c;
            c = digits[i] / 10;
            digits[i] %= 10;
        }
        if(c)
            digits.insert(digits.begin(), 1);
        return digits;
    }
};


Problem solution in C.

int* plusOne(int* digits, int digitsSize, int* returnSize){
    
    int originSize = digitsSize;
    for(int i = digitsSize-1; i>=0; i--){
        if(digits[i]==9){
            digits[i] = 0;
        }else{
            digits[i]++;
            break;
        }
    }
    if(digits[0] == 0){
        digitsSize++;
    }
    *returnSize = digitsSize;
    int* returnArr = (int*)malloc(digitsSize * sizeof(int));
    
    if(originSize == digitsSize){
        for(int i = digitsSize-1; i>=0; i--){
            returnArr[i] = digits[i];
        }    
    }else{
        for(int i = digitsSize-1; i>0; i--){
            returnArr[i] = digits[i-1];
        }
        returnArr[0] = 1;
    }
    
    return returnArr;
}

Post a Comment

0 Comments