如何将两个不同的String数组合并为4*2二维数组并实现行列转置
你提到的先构造2行4列矩阵再转置的方式完全可行,同时也有更直接的实现方法,具体如下:
方案1:通过矩阵转置实现
你写的String[][] result = {a,b};会生成2行4列的矩阵,结构为[["a","b","c","d"], ["1","2","3","4"]],对该矩阵做行列转置即可得到目标的4行2列矩阵,实现代码如下:
// 先校验两个数组长度一致,避免数组越界 if (a.length != b.length) { throw new IllegalArgumentException("两个输入数组长度必须相等"); } String[][] result = {a, b}; int originRow = result.length; int originCol = result[0].length; // 转置后矩阵行列数互换,即原列数为新行数,原行数为新列数 String[][] answer = new String[originCol][originRow]; for (int i = 0; i < originRow; i++) { for (int j = 0; j < originCol; j++) { answer[j][i] = result[i][j]; } }
方案2:直接遍历构造(更推荐)
如果没有通用矩阵转置的需求,直接遍历下标构造目标矩阵的性能更高、代码可读性更强,实现代码如下:
// 同样先做长度校验 if (a.length != b.length) { throw new IllegalArgumentException("两个输入数组长度必须相等"); } int arrLen = a.length; String[][] answer = new String[arrLen][2]; for (int i = 0; i < arrLen; i++) { answer[i][0] = a[i]; answer[i][1] = b[i]; }
内容的提问来源于stack exchange,提问作者bmer
相关产品推荐
相关产品推荐

