java数据结构与算法刷题-----LeetCode59. 螺旋矩阵 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846
解题思路
  1. 初始,top行执向第一行,bottom行指向最后一行。left列指向第一列,right列指向最后一列
  2. 首先填充top行,arr[top][j], (其中left <= j <= right)。此时第一行填充完成,top下移 => top++
  3. 然后填充right列,arr[j][right], (其中top <= j <= bottom)。此时最后一列填充完成,right左移 => tright--
  4. 然后填充bottom行,arr[bottom][j], (其中right >= j >= left)。此时最后一行填充完成,bottom上移 => bottom--
  5. 然后填充left列,arr[j][left], (其中bottom >= j >= top)。此时第一列填充完成,left右移 => left++
  6. 此时完成一圈螺旋,整体进入下一层螺旋,重复上面2,3,4,5操作
代码:时间复杂度O( n 2 n^2 n2).空间复杂度O(1)
java 复制代码
class Solution {
    public int[][] generateMatrix(int n) {
        int arr[][] = new int[n][n];
        int left = 0,right = n-1;//左右边界,left表示当前顺时针圈的最左边一列,right表示最右边
        int top = 0, bottom = n-1;//上下边界,top表示当前顺时针圈的最上面一行,bottom表示最下面
        for(int i = 1;i<=n*n;){
            for(int j = left; j<= right; j++) arr[top][j] = i++;//top行从左到右填满
            top++;//上面将top行填充成功,那么top需要下移一行,准备下一次的填充
            for(int j = top; j <= bottom; j++) arr[j][right] = i++;//right列从上到下填满
            right--;//上面将right列填充成功,right左移
            for(int j = right; j >= left; j--) arr[bottom][j] = i++;//bottom行从右向左填满
            bottom--;//上面将bottom行填充成功,bottom上移
            for(int j = bottom;j>= top;   j--) arr[j][left] = i++;//left列从下到上填满
            left++;//上面将left列填充成功,left列右移
        }
        return arr;
    }
}
相关推荐
甜鲸鱼7 分钟前
【Spring AOP】操作日志的完整实现与原理剖析
java·spring boot·spring
狗头大军之江苏分军11 分钟前
年底科技大考:2025 中国前端工程师的 AI 辅助工具实战盘点
java·前端·后端
晨晖216 分钟前
顺序查找:c语言
c语言·开发语言·算法
LYFlied37 分钟前
【每日算法】LeetCode 64. 最小路径和(多维动态规划)
数据结构·算法·leetcode·动态规划
一 乐39 分钟前
酒店客房预订|基于springboot + vue酒店客房预订系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
计算机毕设指导640 分钟前
基于Spring Boot的防诈骗管理系统【源码文末联系】
java·spring boot·后端·spring·tomcat·maven·intellij-idea
a程序小傲1 小时前
饿了吗Java面试被问:Redis的持久化策略对比(RDBVS AOF)
java·redis·面试
我家领养了个白胖胖1 小时前
MCP模型上下文协议 Model Context Protocol & 百度地图MCP开发
java·后端·ai编程
Coder_Boy_1 小时前
基于DDD+Spring Boot 3.2+LangChain4j构建企业级智能客服系统
java·人工智能·spring boot·后端
Salt_07281 小时前
DAY44 简单 CNN
python·深度学习·神经网络·算法·机器学习·计算机视觉·cnn