java实现方阵的对角线遍历
时间: 2024-05-30 11:06:16 浏览: 13
Java实现方阵的对角线遍历可以使用两个指针来实现。具体实现步骤如下:
1. 首先定义两个指针,一个指向左上角,一个指向右下角。
2. 然后分别移动这两个指针,从左上角开始,每次遍历完对角线上的元素后,再移动到下一条对角线上的起始位置,直到遍历完整个方阵。
3. 在每次遍历时,可以使用一个ArrayList来存储对角线上的元素,遍历完后将ArrayList加入到一个二维数组中。
以下是Java实现方阵对角线遍历的代码示例:
```java
public static int[][] diagonalTraversal(int[][] matrix) {
int m = matrix.length;
int n = matrix.length;
int[][] result = new int[m][n];
int index = 0;
ArrayList<Integer> temp = new ArrayList<>();
// 从左上角开始
int i = 0, j = 0;
while (i < m && j < n) {
temp.clear();
// 遍历当前对角线
while (i >= 0 && j < n) {
temp.add(matrix[i][j]);
i--;
j++;
}
// 将对角线元素加入结果数组
for (int k = temp.size() - 1; k >= 0; k--) {
result[index][k] = temp.get(k);
}
index++;
// 移动指针到下一条对角线起始位置
if (i < 0 && j <= n - 1) {
i = 0;
} else {
i++;
}
j = Math.max(j, 0);
}
// 从右上角开始
i = 0;
j = n - 1;
while (i < m && j >= 0) {
temp.clear();
// 遍历当前对角线
while (i < m && j >= 0) {
temp.add(matrix[i][j]);
i++;
j--;
}
// 将对角线元素加入结果数组
for (int k = temp.size() - 1; k >= 0; k--) {
result[index][n - k - 1] = temp.get(k);
}
index++;
// 移动指针到下一条对角线起始位置
if (j < 0 && i <= m - 1) {
j = 0;
} else {
j--;
}
i = Math.max(i, 0);
}
return result;
}
```