4.LeetCode刷题记录[数组]循环操作

本文记录了在LeetCode上关于螺旋矩阵的刷题心得,包括59.螺旋矩阵II、54.螺旋矩阵和剑指Offer 29.顺时针打印矩阵的解题思路。通过寻找循环规则解决复杂逻辑,总结了旋转逻辑的一般处理方法和特殊情况的应对策略。
摘要由CSDN通过智能技术生成

leetcode有一类题,虽然题目要求的数据结构方面的难度不高,但是对于思维逻辑的要求很高。

就是找到一个自己觉得非常顺的逻辑慢慢的理顺 然后做下去

涉及的题目

59.螺旋矩阵II

54.螺旋矩阵

剑指Offer 29.顺时针打印矩阵

可以从题目就可以看出来 全是什么旋转螺旋

网上看到的基础知识

这个循环可以转懵很多人!​mp.weixin.qq.com/s/Hn6-mlCPvKAdWbiFfQyaaw

59. 螺旋矩阵 II

题目描述

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]

解题思路我是参照教程里面 然后自己得出的自己的看法

感觉就是做这种题的时候你要找到一个规则(循环的规则)

class Solution {
    public int[][] generateMatrix(int n) {
        /**
         * |------>(y)
         * |1 2 3
         * |4 5 6
         * |7 8 9  -->(1,2)->(3,6)->(9,8)->(7,4)
         * 左闭右开
         * 5单独处理
         * 如果数组是双数那么直接就再进行一次顺时针
         */
        int[][] translateN = new int[n][n];
        int loop = n/2;//计算循环次数
        int mid = n/2;
        int indexX = 0, indexY = 0;//定义开始的起始位置
        int num = 1;//定义放到数组中的数字
        int offset = 1;//定义偏差 因为循环是在每一行起始的时候少1
        int i,j;
        while(loop>0){
            i=indexX;
            j=indexY;
            //顺时针转动
            /**
             * 处理从左到右
             * x不变y变 并且y的上限 圈的长度减offset
             * 左闭右开
             * */
            for (; j < indexY + n - offset; j++) {//j会自动多加一个
                translateN[indexX][j] = num++;
            }
            /**
             * 处理从上到下
             * y不变 并且x的上限 圈的长度减去offset
             * 左闭右开
             */
            for(;i < indexX + n - offset; i++){
                translateN[i][j] = num++;
            }
            /**
             * 处理从右到左
             * x不变 并且y的下限是0 + offset
             * 左闭右开
             */
            for (; j>indexY; j--) {
                translateN[i][j] = num++;
            }
                        
            //处理从上到下
            for (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值