0
点赞
收藏
分享

微信扫一扫

LeetCode:59.螺旋矩阵II

沈芏 2024-11-21 阅读 10

四个顶点,四条边,每次处理一个顶点和一条边,然后每完成一圈都需要往里面一层移动,因为每一圈从行的角度来看都是减少两个单元格,所以会一直绕n / 2 圈,如果n是奇数还需要单独考虑最中间的点的值

	public int[][] generateMatrix(int n) {
        int[][] nums = new int[n][n];
        int startX = 0, startY = 0;
        int i = 0, j = 0;
        int offset = 1;
        int count = 1;
        int loop = 1;
        while(loop <= n / 2){
            for(j = startY; j < n - offset; j++){
                nums[startX][j] = count++;
            }
            for(i = startX; i < n - offset; i++){
                nums[i][j] = count++;
            }
            // 通过上面的for循环 已经有 j = n - offset
            for(; j > startY; j--){
                nums[i][j] = count++;
            }
            // 通过上面的for循环,已经有 i = n - offset
            for(; i > startX; i--){
                nums[i][j] = count++;
            }
            startX++;
            startY++;
            offset++;
            loop++;
        }
        if(n % 2 == 1){
            nums[startX][startY] = count;
        } 
        return nums;
    }
举报

相关推荐

0 条评论