首页 > 其他分享 >螺旋矩阵

螺旋矩阵

时间:2024-05-25 23:55:04浏览次数:26  
标签:count mut 螺旋 offset 矩阵 let result usize

leetcode: 59题

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

C# :

public class Solution {
    public int[][] GenerateMatrix(int n) {
          int[][] result = new int[n][];
        for(int p=0;p<n;p++)
        {
            result[p]=new int[n];
        }
        int startx=0;
        int starty=0;
        int offset = 1;
        int count = 1;
        int i=0;
        int j=0;
        //要转的圈数
        
        while(count < n*n)
        {
            j=startx;
            i=starty;
            for(;j<n-offset;j++)
            {
                result[i][j] = count++;
            }
            for(;i<n-offset;i++)
            {
                result[i][j] = count++;
            }

            for(;j>=offset ;j--)
            {
                result[i][j] = count++;
            }
            for(;i>=offset ;i--)
            {
                result[i][j] =count++;
            }
            startx++;
            starty++;
            offset++;
        }

        if(n%2 == 1)
        {
            result[n/2][n/2]=count;
        }
        return result;
    }
}

rust

impl Solution {
    pub fn generate_matrix(n: i32) -> Vec<Vec<i32>> {
   let mut result:Vec<Vec<i32>> =Vec::with_capacity(n as usize);
    for _ in 0..n
    {
        let mut  row = Vec::with_capacity(n as usize);
        for _ in 0..n
        {
            row.push(0);
        }
        result.push(row);
    }
    let mut count =1;
    let mut i;
    let mut j;
    let mut offset = 1;
    let mut startx=0;
    let mut starty=0;
    while count < n*n
    {
        i = starty;
        j = startx;
        while j < n-offset 
        {
            result[i as usize][j as usize] = count;
            count+=1;
            j+=1;
        }
        while i < n - offset 
        {
            result[i as usize][j as usize] = count;
            count += 1;
            i+=1;
        }

        while j >= offset 
        {
            result[i as usize][j as usize] = count;
            count +=1;
            j-=1;
        }
        while i >= offset
        {
            result[i as usize][j as usize] = count;
            count +=1;
            i -= 1;
        }
        startx +=1;
        starty +=1;
        offset +=1;
    }
    if n%2 == 1
    {
        result[(n/2) as usize ][(n/2) as usize] = count;
    }
    result
 }
}

标签:count,mut,螺旋,offset,矩阵,let,result,usize
From: https://www.cnblogs.com/ChuanC/p/18213174

相关文章

  • 【刷题笔记Day2】数组|977.有序数组的平方、209. 长度最小的子数组、59.螺旋矩阵II
    文章目录977.有序数组的平方解题思路遇到的问题及解决方案209.长度最小的子数组解题思路遇到的问题及解决方案59.螺旋矩阵II解题思路遇到的问题及解决方案总结977.有序数组的平方题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新......
  • 【NOIP2014普及组复赛】题4:子矩阵
    题3:子矩阵【题目描述】给出如下定义:1.子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵。例如,下面左图中选取第2、......
  • 【NOIP2014普及组复赛】题3:螺旋矩阵
    题3:螺旋矩阵【题目描述】一个nnn行nnn列的螺旋矩阵可由如下方......
  • 打印9*9乘法表(递归或压缩矩阵)python
    打印9*9表defprint_multiplication_table(row,col):ifrow>10:return#递归结束条件ifcol==row:print()#换行print_multiplication_table(row+1,1)#递归调用下一行else:print(f"{row-1}*{col}={(......
  • python将矩阵转化为灰度图
    1.python将矩阵转化为灰度图的方法要将一个矩阵(通常是一个二维数组,其中每个元素代表一个像素的灰度值)转换为灰度图,我们可以使用Python的matplotlib库。下面是一个详细的步骤和完整的代码示例:(1)准备数据:首先,我们需要一个二维数组(矩阵),其中每个元素代表一个灰度值。灰度值通常在0(黑......
  • python将矩阵转化为灰度图
    1.python将矩阵转化为灰度图的方法要将一个矩阵(通常是一个二维数组,其中每个元素代表一个像素的灰度值)转换为灰度图,我们可以使用Python的matplotlib库。下面是一个详细的步骤和完整的代码示例:(1)准备数据:首先,我们需要一个二维数组(矩阵),其中每个元素代表一个灰度值。灰度值通常在0......
  • 今日刷三题(day13):ISBN号码+kotori和迷宫+矩阵最长递增路径
    题目一:ISBN号码题目描述:每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语......
  • 代码随想录算法训练营第二天|977(双指针),209(滑动窗口),59(螺旋矩阵)
    977.有序数组的平方**1.数组中有正有负,且本身有序。平方后,较大值从两边来比较取出。**2.使用头尾指针方法。209.长度最小的子数组**1.从数组中找符合要求的连续子数组**2.滑动窗口方法:本质为快慢双指针,快指针不断前进直到子数组满足要求,然后慢指针前进直到子数组不满足......
  • 【LeetCode】59. 螺旋矩阵 II
    题目:59.螺旋矩阵II解题思路手动模拟螺旋矩阵,分别实现四个方向的代码,将数组依次填入数组中即可需要注意的是,如果n为奇数,说明最后只剩下中间的一个位置,将最后一个数直接填入即可;若n为偶数,则正好能够遍历n/2遍classSolution{publicint[][]generateMatrix(intn){......
  • 基于FPGA的4x4矩阵键盘驱动设计---第一版
    欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的4x4矩阵键盘驱动设计---第一版功能说明:1.驱动4x4矩阵键盘:按下任意一个按键,解析出对应按键信息,并给出标志 使用平台:纯代码形式使用语言:VerilogHDL 作者QQ:746833924说明:本篇设计中不涉及到IP和原语,......