转圈打印矩阵
2023-02-18 16:35:15 时间
题目:
![](https://img2020.cnblogs.com/blog/2168218/202101/2168218-20210113183736192-624970483.png)
思路:
本题难点:由于是整型矩阵,所以存在5*5,4*5,4*6,这种,可能出现还剩下一列或者一行或者单个的情况。
代码示例:
import java.util.Arrays;
public class Solution2 {
public static void main(String[] args) {
int len = 7, higt = 10;
int[][] A = new int[higt][len];
for (int i = 0; i < higt; i++) {
for (int j = 0; j < len; j++) {
A[i][j] = j + 1 + i * len;
System.out.print(A[i][j] + "\t");
}
System.out.println();
}
System.out.println(Arrays.toString(printMatrix(A)));
}
/**
* @param matrix int整型二维数组 the matrix
* @return int整型一维数组
*/
public static int[] printMatrix(int[][] matrix) {
int length = matrix[0].length, high = matrix.length;
int num = length * high;
int[] result = new int[num];
int upper = 0, lower = high - 1, left = 0, right = length - 1;
int index = 0;
while (upper < lower && left < right) {
for (int i = left; i <= right; i++) {
result[index++] = matrix[upper][i];
}
upper++;
for (int i = upper; i <= lower; i++) {
result[index++] = matrix[i][right];
}
right--;
for (int i = right; i >= left; i--) {
result[index++] = matrix[lower][i];
}
lower--;
for (int i = lower; i >= upper; i--) {
result[index++] = matrix[i][left];
}
left++;
}
//由于是整型矩阵,所以存在5*5,4*5,4*6,这种,可能出现还剩下一列或者一行或者单个的情况
if (left == right && upper < lower) {
for (int i = upper; i <= lower; i++) result[index++] = matrix[i][left];
} else if (upper == lower && left < right) {
for (int i = left; i <= right; i++) result[index++] = matrix[upper][i];
} else if (left == right && upper == lower) {
result[index] = matrix[upper][left];
}
return result;
}
}
相关文章
- [日常] 华为手机截屏快捷键
- [windows] win10下的SysMain服务
- [nginx] X-Cache: HIT的意思
- [MySQL] 解决ERROR 1273 (HY000) at line 199: Unknown collation: 'utf8mb4_0900_ai_ci'
- [css] 加载本地文件出现跨域Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
- [html] link 标签 rel=canonical 属性的用法
- [windows] win10刷新dns的方法
- [windows] win10系统hosts文件的位置
- [Nginx] nginx屏蔽某个url和指定参数访问
- [PHP] 解决宝塔部署报错Warning: require(): open_basedir restriction in effect
- [PHP] php 7.4 Array and string offset access syntax with curly braces is deprecated
- [日常]华为手机允许APP应用后台保持运行,并显示通知
- Redis中scan命令实战
- [Nginx] 博客园出现了502错误该怎么追查原因
- [MySQL] myisam比innodb查询过程效率探究
- [MySQL]myisam表的索引结构以及查询过程
- [MySQL] innodb表为varchar字段建立索引后的查询过程
- [MySQL] 联合索引最左前缀原则的原因
- [日常] 浏览器前进后退与数据结构的思想
- [PHP] 判断两个数组是否相同