数组专栏之螺旋数组

题目:

给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
在这里插入图片描述

解析:

这道题主要就是考察模拟的能力。
模拟顺时针遍历数组矩阵的过程。
分为四步:
模拟上侧从左到右
模拟右侧从上到下
模拟下侧从右到左
模拟左侧从下到上

在这里插入图片描述

在模拟过程中,要遵循左闭右开的原则,仔细考虑每一处的边界条件。

代码:

class Solution {
    public int[][] generateMatrix(int n) {
     
     int[][] result=new int[n][n];
     int loop=n/2;  //循环几次
     int mid=n/2;   //中间位置
     int count=1;  //每个位置的值
     int offset=1;  //每次循环遍历的长度
    
     int startx=0,starty=0;
     while(loop>0){
        int i = startx;
        int j = starty;
         for(;j< n+starty-offset;j++){ // 模拟上侧从左到右
             result[startx][j]=count++;
         }
         for(;i<n+startx-offset;i++){  // 模拟右侧从上到下
             result[i][j]=count++;
         }
         for(;j>starty;j--){  // 模拟下侧从右到左
             result[i][j]=count++;
         }
         for(;i>startx;i--){   // 模拟左侧从下到上
             result[i][j]=count++;
         }
          startx++;
          starty++;
          offset+=2;
          loop--;
     }

   if(n%2!=0){
       result[mid][mid]=n*n;
   }
      return result;
    }
}

参考:
leetcode-master/problems/0059.螺旋矩阵II.md

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Python中,可以使用索引和切片的方式获取数组元素。对于一维数组,可以使用与列表和元组相同的方式进行获取。例如,通过索引获取单个元素,可以使用arr\[index\]的形式。通过切片获取多个元素,可以使用arr\[start:end\]的形式,其中start表示起始索引,end表示结束索引。还可以使用负数索引来从末尾开始获取元素,例如arr\[-1\]表示获取最后一个元素。此外,还可以使用步长来获取间隔的元素,例如arr\[::2\]表示从第一个元素开始,以步长为2获取所有元素。\[1\] 另外,如果要获取多个元素,且它们的索引没有固定步长的规则,可以传入一个列表作为索引。例如,可以使用arr\[\[index1, index2, index3\]\]的形式来获取指定索引的元素。\[3\] 在Python中,还可以使用insert()和append()方法向数组中添加元素。insert()方法可以在指定位置插入元素,语法为arr.insert(index, value)。append()方法可以在数组末尾添加元素,语法为arr.append(value)。\[2\] #### 引用[.reference_title] - *1* *3* [【Python系列专栏】第五十六篇Python中Numpy 数组元素的获取](https://blog.csdn.net/Mrrunsen/article/details/116454317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python添加数组元素_在Python中向数组添加元素](https://blog.csdn.net/cumtb2002/article/details/107765062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值