首页 > 编程语言 >leetcode 59. 螺旋矩阵 II java解法

leetcode 59. 螺旋矩阵 II java解法

时间:2024-11-12 23:14:42浏览次数:3  
标签:java mat start int ++ II 59 循环 end

以1 2 3 4 5 6 7 8 9为例

n=奇数

结果

1                 2                 3           i

8                 9                 4

7                 6                 5

j

循环次数循环内次数结果对应坐标ij
111,2(0,0)(1,0)0-10
123,4(2,0)(2,1)20-1
135,6(2,2)(1,2)2-12
147,8(0,2)(0,1)02-1
219(1,1)i==j(终止)11

以及

1 2  3 4 5 6 7 8  9 10 11 12 13 14 15 16

n=偶数

结果

1        2        3         4 

12      13     14        5

11       16     15       6

10       9        8        7

循环次数循环内次数结果ij
111,2,30-20
124,5,630-2
137,8,93-13
1410,11,1203-1
211311
221421
231522
2416    j=1+1(终止)12

除终止条件不同

其他可发现在一次循环内(在第一次循环时start=0,end=length-1)

第一次        for i start-end-1  and j=start

第二次        for j start-end-1  and i=end

第三次        for i end-start+1 and j=end

第四次        for j end-start+1 and i=start

循环之间

start++,end--

但是要区分n的奇数和偶数

n=奇数,如果跟偶数一样处理,则会使最后一个值重复四次

if(start==end)       (只有奇数才能做到)

        填充最后一个数

        终止

if n=偶数

         if start>end

        终止

同时要处理特殊n==1时

要将终止判断放到循环头

代码

class Solution {
    public int[][] generateMatrix(int n) {
         int[][] mat = new int[n][n];

         int index=1;
         int start=0,end=n-1;
         int i,j;

         while(true)
         {
            if(start==end)
            {
                mat[start][end]=index++;
                break;
            }
            else if(start>end)
            {
                break;
            }
            for(i=start;i<=end-1;i++)
            {
                mat[start][i]=index++;
            }
            for(j=start;j<=end-1;j++)
            {
                mat[j][end]=index++;
            }
            for(i=end;i>=start+1;i--)
            {
                mat[end][i]=index++;
            }
            for(j=end;j>=start+1;j--)
            {
                mat[j][start]=index++;
            }
            end--;
            start++;
         }
         return mat;
    }
}

标签:java,mat,start,int,++,II,59,循环,end
From: https://blog.csdn.net/weixin_73376914/article/details/143717124

相关文章

  • Java异常处理
    在Java中,异常是指在程序运行过程中出现的错误条件。当发生异常时,程序会终止执行并抛出一个异常对象。为了有效地处理异常,Java提供了异常处理机制。Java的异常处理机制主要涉及以下几个关键字和语句:try-catch:使用try块来包裹可能抛出异常的代码,然后使用catch块来捕获并处理异......
  • 每日OJ题_牛客_kotori和迷宫_BFS_C++_Java
    目录牛客_kotori和迷宫_BFS题目解析C++代码Java代码牛客_kotori和迷宫_BFSkotori和迷宫描述:        kotori在一个n*m迷宫里,迷宫的最外层被岩浆淹没,无法涉足,迷宫内有k个出口。kotori只能上下左右四个方向移动。她想知道有多少出口是她能到达的,最近的出口离她......
  • 代码随想录算法训练营第二十三天| leetcode39. 组合总和、leetcode40.组合总和II、lee
    1leetcode39.组合总和题目链接:39.组合总和-力扣(LeetCode)文章链接:代码随想录视频链接:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)|回溯法精讲!_哔哩哔哩_bilibili思路:跟之前差不多,就是将他的循环改一下,但是我发现有重复的数值了,不知道如何删除1.1自......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现五
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现六
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • javascript 流程控制,数组【知识点整理】
    javascriptJS流程控制条件控制语句循环语句跳转语句:异常处理:JS数组数组的方法JS流程控制条件控制语句if语句:用于在满足特定条件时执行代码块。if(condition){//如果条件为真,则执行代码块}if…else语句:在条件为真时执行一段代码,条件为假时执......
  • Java面试之多线程&并发篇(2)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!Thread类中的start()和run()方法有什么区别?为什么wait,notify和notifyAll这些方法不在thread类里面?为什么wait和notify方法要在同步块中调用?Java中interrupted和isInterruptedd方法的区别?ava中synchronized和R......
  • javaweb基于SSH开发大学生在线选课系统源码+PPT 大作业 课程设计
    ......
  • word模板填充 java
    From: https://blog.51cto.com/u_16213356/12447686在现代开发中,Word文档的自动生成和模板填充是一项非常常见的需求。尤其是在生成报表、合同、信函等场景时,通过代码自动化填充模板可以极大提高工作效率。本文将详细介绍如何使用Java实现Word模板填充。我们将通过以下步骤......
  • 基于java+ssm的高校奖助学金系统
    前言基于Java+SSM的高校奖助学金系统能高效、公平地管理奖助学金相关事务。系统存储了丰富的学生信息,包括基本资料、学业成绩、综合素质评价、家庭经济情况等。这些数据为奖助学金评定提供依据。在奖助学金项目管理方面,详细记录每个奖项和助学金的名称、设立条件、金......