Matrix Addition in Java

The challenge

Write a function that accepts two square matrices (N x N two dimensional arrays), and return the sum of the two. Both matrices being passed into the function will be of size N x N (square), containing only integers.

How to sum two matrices:

Take each cell [n][m] from the first matrix, and add it with the same [n][m] cell from the second matrix. This will be cell [n][m] of the solution matrix.

Visualization:

|1 2 3| |2 2 1| |1+2 2+2 3+1| |3 4 4| |3 2 1| + |3 2 3| = |3+3 2+2 1+3| = |6 4 4| |1 1 1| |1 1 3| |1+1 1+1 1+3| |2 2 4|

Example

matrixAddition( [ [1, 2, 3], [3, 2, 1], [1, 1, 1] ], // + [ [2, 2, 1], [3, 2, 3], [1, 1, 3] ] ) // returns: [ [3, 4, 4], [6, 4, 4], [2, 2, 4] ]
Code language: JavaScript (javascript)

The solution in Java code

Option 1:

public class Solution { public static int[][] matrixAddition(int[][] a, int[][] b) { int matLen = a.length; int[][] resultMatrix = new int[matLen][matLen]; for(int i = 0; i < matLen; i++) { for(int j = 0; j < matLen; j++) { resultMatrix[i][j] = a[i][j] + b[i][j]; } } return resultMatrix; } }
Code language: Java (java)

Option 2:

import java.util.stream.IntStream; public class Solution { public static int[][] matrixAddition(int[][] a, int[][] b) { IntStream.range(0, a.length * a.length) .forEach(n -> a[n / a.length][n % a.length] += b[n / a.length][n % a.length]); return a; } }
Code language: Java (java)

Option 3:

public class Solution { public static int[][] matrixAddition(int[][] a, int[][] b) { for(int row=0;row<a.length;row++) for(int col=0;col<a[0].length;col++) a[row][col]+=b[row][col]; return a; } }
Code language: Java (java)

Test cases to validate our solution

import org.junit.Test; import static org.junit.Assert.assertArrayEquals; public class MatrixAdditionTest { @Test public void sampleTest() { int[][] expected = new int[][] { { 3, 4, 4 }, { 6, 4, 4 }, { 2, 2, 4 } }; assertArrayEquals(expected, Solution.matrixAddition( new int[][] { { 1, 2, 3 }, { 3, 2, 1 }, { 1, 1, 1 } }, new int[][] { { 2, 2, 1 }, { 3, 2, 3 }, { 1, 1, 3 } })); expected = new int[][] { { 3 } }; assertArrayEquals(expected, Solution.matrixAddition( new int[][] { { 1 } }, new int[][] { { 2 } })); expected = new int[][] { { 3, 5 }, { 3, 5 } }; assertArrayEquals(expected, Solution.matrixAddition( new int[][] { { 1, 2 }, { 1, 2 } }, new int[][] { { 2, 3 }, { 2, 3 } })); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments