题解 | #二维数组操作#
二维数组操作
https://www.nowcoder.com/practice/2f8c17bec47e416897ce4b9aa560b7f4
这道题比较难的就在于对数组进行加减
/** * 指定位置添加行 * @param originalArray 原始数组 * @param rowIndex 指定位置 * @param newRow 新行 * @return 返回添加行后的新数组 */ public static int[][] addRow(int[][] originalArray, int rowIndex, int[] newRow) { // 计算新数组的大小 int numRows = originalArray.length + 1; int numCols = originalArray[0].length; // 创建新数组 int[][] newArray = new int[numRows][numCols]; // 将原数组中的元素复制到新数组中 for (int i = 0; i < rowIndex; i++) { System.arraycopy(originalArray[i], 0, newArray[i], 0, numCols); } // 在指定位置插入新的行 System.arraycopy(newRow, 0, newArray[rowIndex], 0, numCols); if (rowIndex < originalArray.length - 1) { //满足这个条件说明是在中间插入的行 for (int i = rowIndex + 1; i < originalArray.length; i++) { System.arraycopy(originalArray[i], 0, newArray[i + 1], 0, numCols); } } // 返回新数组 return newArray; }
/** * 减去指定行数 * @param originalArray 原始数组 * @param subtractNumRow 减去的行数 * @return 处理过之后的数组 */ public static int[][] subtractRow(int[][] originalArray, int subtractNumRow) { // 计算新数组的大小 int numRows = originalArray.length - subtractNumRow; int numCols = originalArray[0].length; // 创建新数组 int[][] newArray = new int[numRows][numCols]; // 将原数组中的元素复制到新数组中 for (int i = 0; i < numRows; i++) { System.arraycopy(originalArray[i], 0, newArray[i], 0, numCols); } // 返回新数组 return newArray; }
/** * 二维数组指定位置添加列,添加的类默认值是0 * @param originalArray 原始数组 * @param colIndex 执行索引 * @return 返回添加了列之后的数组 */ public static int[][] addColumn(int[][] originalArray, int colIndex) { // 计算新数组的大小 int numRows = originalArray.length; int numCols = originalArray[0].length + 1; // 创建新数组 int[][] newArray = new int[numRows][numCols]; // 将原数组中的元素复制到新数组中 for (int i = 0; i < numRows; i++) { System.arraycopy(originalArray[i], 0, newArray[i], 0, colIndex); System.arraycopy(originalArray[i], colIndex, newArray[i], colIndex + 1, numCols-1-colIndex); //添加的列默认是0 newArray[i][colIndex] = 0; } // 返回新数组 return newArray; }
/** * 减去指定列数 * @param originalArray 原始数组 * @param colNum 减少的列数 * @return 返回添加了列之后的数组 */ public static int[][] subtractColumn(int[][] originalArray, int colNum) { // 计算新数组的大小 int numRows = originalArray.length; int numCols = originalArray[0].length - colNum; // 创建新数组 int[][] newArray = new int[numRows][numCols]; // 将原数组中的元素复制到新数组中 for (int i = 0; i < numRows; i++) { System.arraycopy(originalArray[i], 0, newArray[i], 0, numCols); } // 返回新数组 return newArray; }