当前位置: 首页 > news >正文

每日挠头算法题(十五)螺旋矩阵II

“强大方能侠义”

------持续更新Blue Bridge杯入门系列算法实例--------

如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流!

你的点赞、关注、评论、是我创作的动力!

-------希望我的文章对你有所帮助--------

 前言:最近可能有点忙,会放缓更新进度,但会尽量保证每周更新,持续学习才是王道。

一、题目描述

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

示例 1:

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

示例 2:

输入:n = 1
输出:[[1]]

 解题思路:1、本题是将矩阵转换成螺旋矩阵,即要按照一定的顺序对矩阵进行位置的变换。

2、首先明确螺旋矩阵螺旋次数为n/2,即n为3时只能完成如示例中的一次螺旋。

3、建立一个起始点为start,从第一个矩阵元素开始,按从左到右,从右到下,从右到左,从下到上的顺序完成螺旋。

4、且注意从左到右、从上到下时元素坐标中的一个是递增的,另外则是递减的。

5、因此每次只要改变元素其中一个横或纵坐标即可。

6、当循环结束时,如果矩阵大小为奇数,则需要手动为最中间的元素赋值。

二、代码实现

class Solution {
    public int[][] generateMatrix(int n) {
        int res[][]=new int[n][n];
        int loop=0;
        int start=0;
        int count=1;
        int l,c;
        while(loop++ <n/2){

        for(c=start;c<n-loop;c++){
            res[start][c]=count++;
        }
        for(l=start;l<n-loop;l++){
            res[l][c]=count++;
        }
        for(;c>=loop;c--){
            res[l][c]=count++;
        }
        for(;l>=loop;l--){
            res[l][c]=count++;
          
        }
          start++;

        }
        if(n%2==1){
            res[start][start]=count;
        }
        return res;

    }
}

 

相关文章:

  • 基于随机森林与LSTM神经网络的住宅用电比较分析及预测 代码+论文 完整毕设
  • 高效 CUDA 调试:将 NVIDIA Compute Sanitizer 与 NVIDIA 工具扩展结合使用并创建自定义工具
  • iOS - Runtime-API
  • Linux第84步_了解Linux中断及其函数
  • 【正版特惠】IDM 永久授权 优惠低至109元!
  • 王道c语言-二叉树前序、中序、后序、层次遍历
  • HashMap学习
  • 【Spring连载】使用Spring Data访问 MongoDB----Template API 查询Documents
  • 计算机网络---物理层疑难点总结
  • 人工智能大学课程-ChatGPT生成
  • 2023 re:Invent 用 Amazon Q 打造你的知识库
  • JVM相关面试题
  • 度量方法总结
  • 基于正则化Regularized Interpolation插值算法的图像超分辨重构研究-附Matlab代码
  • Java 反射机制
  • 【CMU15-445 Part-8】Tree Indexes ii
  • JSON相关
  • Hygieia (Devops)开源-搭建步骤(一)
  • 桥接设计模式
  • [附源码]计算机毕业设计物品捎带系统Springboot程序
  • 100天精通Python(数据分析篇)——第67天:Pandas数据连接、合并、重构(pd.merge、pd.concat、stack、unstack)
  • 使用uni-app创建扫码连接wifi小程序
  • 【单片机基础】ADC0832详解
  • [附源码]计算机毕业设计基于springboot的文成考研培训管理系统
  • Java Script 内置对象(三) --------- Array 对象
  • 机器学习:详细推导高斯混合聚类(GMM)原理(附Python实现)
  • 华为机试 - 字符串匹配
  • 关于spark配置项 和 hive serDe 和 spark serDe
  • Linux | 二级页表的虚拟地址是怎么转换的?
  • .m3u8.sqlite文件转mp4,m3u8.sqlite文件转视频工具(开源免费)
  • 计算机毕业设计Java电商项目(源码+系统+mysql数据库+lw文档)
  • webpack使用入门贴