Loading... ## 前言 前几天朋友叫我帮忙说一下一道算法题的思路,今天我将他记录下来: ## 回形数格式的矩阵实现 刚开始的时候我就想到了怎么做,但是代码写起来发现并不简单 <img src="https://cdn.ganhua.work/assets/img/emotion/aru/knife.png" class="emotion-aru"> 。 <img src="https://cdn.ganhua.work/blog_static/images/2020-10/30/%E5%9B%9E%E5%BD%A2%E7%9F%A9%E9%98%B5.png" width = "300" height = "200" alt="聊天1" align=center style=""> --- <img src="https://cdn.ganhua.work/blog_static/images/2020-10/30/%E5%9B%9E%E5%BD%A2%E7%9F%A9%E9%98%B52.png" width = "300" height = "200" alt="聊天2" align=center style=""> 历经20分钟后面就做出来了,现在在这里记录一下: ```java /** * while循环体一次只处理4个边界: * 上右下左(按顺时针顺序) * 循环体的结束条件:未处理的数组为0行或者0列。 * 因为在缩小边界的时候,只需要保证数组为0行或者0列就可以保证未处理的数组大小为0 */ public static void main(String[] args) { int n = 3; if (n == 0) { return; } // 定义一个二维数组 输入多少就是多少列与多少行 int[][] arr = new int[n][n]; int up = 0; // 我们主要控制的是右边界和下边界 就像给你说的3就是3行 因为for所以减1 int bottom = n - 1; int left = 0; // 右边界 int right = n - 1; int value = 1; while (true) { //处理上边界 for (int i = left; i <= right; i++) { // 第一行就是 0 1 = 1,0 2 = 2 0 3 = 3 arr[up][i] = value; // 执行完成value = 3 value++; } //上边界处理完成后缩小上边界,并判断行数是否为O,即判断up是否大于bottom 加上边界 up++; // 如果上边界大于我们输入的边界就直接停止 if (up > bottom) { break; } //处理右边界 因为右边界固定死了 只需要填数就行 1 2 = 4, 2 2 = 5 停止 for (int i = up; i <= bottom; i++) { arr[i][right] = value; // 执行完成后现在value = 5 value++; } //右边界处理完成后缩小右边界,并判断列数是否为0,即判断right是否小于left // 我们缩小右边界 然后往左移动 同上 break right--; if (right < left) { break; } //处理下边界 for (int i = right; i >= left; i--) { // 2 1 = 6,2 1 = 7 arr[bottom][i] = value; // 执行完后等于7 value++; } //下边界处理完成后缩小下边界,并判断行数是否为0,即判断bottom是否小于up bottom--; if (bottom < up) { break; } //处理左边界 同上 for (int i = bottom; i >= up; i--) { arr[i][left] = value; value++; } //左边界处理完成后缩小左边界,并判断列数是否为0,即判断left是否大于right left++; if (left > right) { break; } } // 输出数组 for (int[] ints : arr) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println(Arrays.deepToString(arr)); } ``` 今天做到leetcode相同的题了贴一下链接:https://leetcode-cn.com/problems/spiral-matrix-ii/ 最后修改:2021 年 10 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 社会很单纯~复杂滴是人呐~谁能在乎我呀
此处评论已关闭