Skip to content

Latest commit

 

History

History
83 lines (64 loc) · 1.16 KB

File metadata and controls

83 lines (64 loc) · 1.16 KB

###Add two array

add elements of two array

/*
 1 2 3 4 5
     1 5 5
1 2 5 0 0
 */


/*
test case

1 2 3 4 5
1 5 5

result = 13500
min = 3
max = 5
longer = input1
short = input2
carry = 0
sum = 10
carry = 1;
digit = 0;

 */


public class Solution{
	public int[] add(int[] input1, int[] input2) {
		int m = input1.length;
		int n = input2.length;

		int min = Math.min(m, n);
		int max = Math.max(m, n);

		int[] longer;
		int[] shorter;
		if (max == m) {
			longer = input1;
			shorter = input2;
		} else {
			longer = input2;
			shorter = input1;
		}
		int carry = 0;
		ArrayList<Integer> result = new ArrayList<Integer>();


		for (int i = min - 1, j = max - 1; i >= 0; i--) {
			int sum = longer[i] + shorter[i] + carry;
			int digit = sum % 10;
			carry = sum / 10;
			result.add(0, digit);
		}

		for (int i = max - min - 1; i >= 0; i--) {
			int sum = longer[i] + carry;
			int digit = sum % 10;
			carry = sum / 10;
			result.add(0, digit);
		}

		int digit = carry;
		if (digit != 0) {
			result.add(0, digit);
		}

		int size = result.size();
		int[] output = new int[size];
		for (int i = 0; i < size; i++) {
			output[i] = result.get(i);
		}

		return output;

	}
}