当前位置: 首页 > 编程笔记 >

Java实现输出回环数(螺旋矩阵)的方法示例

许永年
2023-03-14
本文向大家介绍Java实现输出回环数(螺旋矩阵)的方法示例,包括了Java实现输出回环数(螺旋矩阵)的方法示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java实现输出回环数(螺旋矩阵)的方法。分享给大家供大家参考,具体如下:

以前见过,没做出来;那天论坛再见,灵感来了,太神奇了

复杂度好像为 o(n)

保存下来

package demo;
public class snakeMatrixDemo {
    public static void main(String[] args) {
        int m = 5;/* 行 */
        int n = 5;/* 列 */
        int[][] pos = new int[m][n];/* 位置 */
        /**
         * 位置结构如下: [0][0],[0][1],[0][2],[0][3],[0][4]
         *
         * [1][0],[1][1],[1][2],[1][3],[1][4]
         *
         * [2][0],[2][1],[2][2],[2][3],[2][4]
         *
         * [3][0],[3][1],[3][2],[3][3],[3][4]
         *
         * [4][0],[4][1],[4][2],[4][3],[4][4]
         */
        int count = 0;
        int r = 0, c = 0;/* r:行下标 c:列下标 pos[r][c]对应以上位置 */
        /* 赋值方向,先向右c++,再向下r++,再向左c--,再向上r-- */
        final int up = 1;
        final int down = -1;
        final int left = 2;
        final int right = -2;
        int dir = right;/* 开始方向 */
        int cir = 1;/* 第几圈赋值 */
        while (count < m * n) {
            count++;
            pos[r][c] = count;/* 赋值 */
            switch (dir) {
            case right:
                if (c < n - cir) {/* 当前行右方还有没赋值的 */
                    c++;
                } else {
                    dir = down;
                    r++;
                }
                break;
            case down:
                if (r < m - cir) {/* 当前列下方还有没赋值的 */
                    r++;
                } else {
                    dir = left;
                    c--;
                }
                break;
            case left:
                if (c > cir - 1) {/* 当前行左边还有没赋值的 */
                    c--;
                } else {
                    dir = up;
                    r--;
                }
                break;
            case up:
                if (r > cir) {/* 当前列上边边还有没赋值的 */
                    r--;
                } else {
                    cir++;/* 赋值了一圈 */
                    dir = right;
                    c++;
                }
                break;
            }
        }
        System.out.println("小牛知识库测试结果:");
        /* 输出 */
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (pos[i][j] < 10) {
                    System.out.print(pos[i][j] + " " + " ");
                } else {
                    System.out.print(pos[i][j] + " ");
                }
            }
            System.out.println();
        }
    }
}

运行结果:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 本文向大家介绍JavaScript定义及输出螺旋矩阵的方法详解,包括了JavaScript定义及输出螺旋矩阵的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript定义及输出螺旋矩阵的方法。分享给大家供大家参考,具体如下: 昨晚无意看到这样一个算法题目,然后就想着用js来实现。 昨晚草草写完后感觉代码很丑,很臭,于是今晚又花点时间重构了一下,感觉变得优雅了。 什么是螺

  • 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,

  • 我想用一个整数的方法打印一个螺旋矩阵。然而,我在纸上的代码运行得很好,但是当我运行时,我会得到不同的数字来代替我想要的数字。 在现实中,它应该打印如下内容 如果您能帮忙,我们将不胜感激。

  • 本文向大家介绍螺旋打印矩阵,包括了螺旋打印矩阵的使用技巧和注意事项,需要的朋友参考一下 该算法用于以螺旋方式打印数组元素。首先,从第一行开始,先打印全部内容,然后按照最后一列打印,然后再最后一行,依此类推,从而以螺旋方式打印元素。  该算法的时间复杂度为O(MN),M为行数,N为列数。 输入输出 算法 输入: 矩阵矩阵,行和列m和n。 输出:以螺旋方式打印矩阵的元素。 示例 输出结果

  • 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 解法如下: /** * @param {number} n * @return {number[][]} */ var generateMatrix = f

  • 本文向大家介绍Java编程实现打印螺旋矩阵实例代码,包括了Java编程实现打印螺旋矩阵实例代码的使用技巧和注意事项,需要的朋友参考一下 直接上代码吧。 昨晚腾讯在线测试遇到的题。 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。 总结 以上就是本文关于Java编程实现打印螺旋矩阵实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续