When implementing a Matrix construct using arrays, which would be more efficient? Using a 1D array, or an array of arrays (2D)?
I would think a 2D is more efficient
In the general case, the most efficient implementation for any algorithm is the one which has the least amount of code. This is for many reasons:
It also depends a lot on the access patterns. Do you always walk the whole matrix? Is it sparse? Do you prefer to process rows or columns?
In the extreme case (matrix with a billion rows and columns with only 10 cells used), a HashMap can be more efficient than any array implementation. For other problems, it can be more efficient to mix the approaches depending on the problem (for example, a HashMap of arrays of mini-matrices when cells "clump" in a gigantic empty space).
If your problems asks to locate a row/column and then process those values, it might be more efficient to use a 2D approach, so the first access returns an array which you can then process without bothering about boundaries, one-off-errors, etc.