Add One To Number

Feb 3, 2017

Given a non-negative number represented as an array of digits,
add 1 to the number ( increment the number represented by the digits ).
The digits are stored such that the most significant digit is at the head of the list.
Example:
If the vector has [1, 2, 3]
the returned vector should be [1, 2, 4]
as 123 + 1 = 124.

                
public class Solution {
    public ArrayList plusOne(ArrayList a) {
        int carry = 1;
        int sum = 0;
        int no = 0;
        for(int i=a.size()-1; i>=0; i--){
            sum = a.get(i) + carry;
            no = sum%10;
            carry = sum/10;
            a.set(i,no);
            if(carry == 0){
                break;
            }
        }
        if(carry != 0){
            Collections.reverse(a);
            a.add(carry);
            Collections.reverse(a);
        }else{
            while (a.get(0) ==0 ){
                a.remove(0);
            }
        }
        return a;
    }
}