package 剑指Offer.二维矩阵.顺时针打印矩阵;
/**
* @program:多线程和IO
* @descripton:顺时针向内打印数组
* @ 例如给定一个二维数组 [1,2,3] [1 ,2 ,3 ,4]
* [4,5,6] [5 ,6 ,7 ,8]
* [7,8,9] [9,10,11,12]
* @ 我们需要输出 123698745 [13,14,15,16]
* @author:ZhengCheng
* @create:2021/10/19-19:50
**/
public class ClockPrint {
public static void main(String[] args) {
//初始化一个二维矩阵
int[][] arr = new int[4][4];
int k = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = k++;
}
}
// new ClockPrint().show(arr);
new ClockPrint().clockPrint(arr);
}
// 遍历检查 矩阵
/*private void show(int[][] arr){
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}*/
private void clockPrint(int[][] arr) {
//设定四个指针
int top = 0;
int left = 0;
int right = arr[1].length - 1;
int bottom = arr.length - 1;
int i = 0;
int j = 0;
while (top <= bottom && left <= right) {
//四方遍历 →↓←↑
while (j < right) {
System.out.print(arr[i][j++] + "-");
}
top++;
while (i < bottom) {
System.out.print(arr[i++][j] + "-");
}
right--;
while (j > left) {
System.out.print(arr[i][j--] + "-");
}
bottom--;
while (i > top) {
System.out.print(arr[i--][j] + "-");
}
left++;
if (top > bottom || left > right) {
System.out.print(arr[i][j]);
}
}
}
}
剑指Offer - 顺时针输出矩阵
顺时针打印矩阵:Java实现从外向内遍历
最新推荐文章于 2025-12-07 21:20:15 发布
这篇文章介绍了如何使用Java编程语言实现一个名为ClockPrint的类,用于顺时针方向打印二维矩阵,从外向内逐步填充数字。通过四个指针控制边界,展示了如何巧妙地遍历并打印出矩阵的内容。
399

被折叠的 条评论
为什么被折叠?



