首页 > 其他分享 >59螺旋数组

59螺旋数组

时间:2024-10-12 11:59:24浏览次数:7  
标签:count 59 螺旋 int ++ -- result 数组

按照边遍历的顺序进行赋值,可以将整个任务分为多个螺旋完成,每个螺旋按边打印。最外层螺旋起始分别是(0,0)->(0,n-1)->(n-1.n-1)->(n-1,0)->(1,0),螺旋的最后一条边会比前三条短1,同时每次更新打印螺旋需要注意螺旋的边会减少1,因此在每层螺旋的最后一条边打印前更新长度即可。最后注意下根据n来设置螺旋层数。
题目不难,但是有很多细节需要注意,比如每层边跳出时参数的变化,
代码如下:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> result(n, vector<int>(n, 0));
        int count = 1;
        int i = 0;
        int j = 0;
        int k = 0;
	   int loop = ceil(n / 2.0);
        while ( loop-- ) {
            while (j <= n - 1 - k) {
                result[i][j] = count;
                count++;
                j++;
            }//跳出循环时j=n-k;
			
            j--;//j=n-1-k
            i++;
            while (i <= n - 1 - k) {
                result[i][j] = count;
                count++;
                i++;
            }

            i--;//i=n-1-k
            j--;
            while (j >= k) {
                result[i][j] = count;
                count++;
                j--;
            }
			
            j++;//j = k
            i--;
            k++;//边长减1
            while (i >= k) {
                result[i][j] = count;
                count++;
                i--;
            }
			//更新下一螺旋的起点
            i = k;
            j = k;
        }
        return result;
    }
};

标签:count,59,螺旋,int,++,--,result,数组
From: https://www.cnblogs.com/gqzz/p/18460260

相关文章

  • 【汇总】Linux shell 数组使用
    前言全局说明【汇总】Linuxshell数组使用一、说明环境:Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMPWedMay2400:51:42UTC2023x86_64x86_64x86_64GNU/Linux)二、创建数组2.1声明一个空数组test_array=()2.2创建数组test......
  • mongo对文档中数组进行过滤的三种方法
    前言在mongo中数据类型有很多种,常见的包括:数据类型例子描述String{"x":"foot"}字符串。存储数据常用的数据类型。在MongoDB中,UTF-8编码的字符串才是合法的。Integer{"x":1}整型数值。用于存储数值。根据你所采用的服务器,可分为32位或64位。......
  • C# unsafe 快速复制数组
    ///<summary>///复制内存///</summary>///<paramname="dest">目标指针位置</param>///<paramname="src">源指针位置</param>///<paramname="count">字节长度</param>......
  • 代码随想录Day23 | LeetCode 455. 分发饼干、LeetCode 53. 最大子数组和、LeetCode 37
    LeetCode455.分发饼干贪心就是干classSolution:deffindContentChildren(self,g:List[int],s:List[int])->int:g.sort(reverse=True)s.sort(reverse=True)i=j=0res=0whilei<len(g)andj<len(......
  • Python数据分析NumPy和pandas(五、NumPy高维数组的数学计算 2)
    一、Numpy的花式索引FancyIndexing花式索引FancyIndexing是NumPy采用的一个术语,用于描述使用整数数组进行索引。1.举例:用元组来创建一个8x4的二维数组zeros,并循环赋值:importnumpyasnparr=np.zeros((8,4))#为二维数组arr每行赋值foriinrange(8):arr[i......
  • HALCON数据结构之数组
    1.1Tuple数组的基本操作*1、Tuple数组元素的创建*1.1、创建一个空数组assign([],empty_tuple)//采用赋值操作empty_tuple:=[]//采用赋值操作*1.2、创建一个整型数组assign([1,2,3,4,5,6,7,8,9,10],tupleInt1)//采用赋值操作tupleInt1:=[1,0,3,4,5,6,7,8,9]/......
  • P3959 [NOIP2017 提高组] 宝藏 题解
    P3959[NOIP2017提高组]宝藏题解搜索魅力时刻怎么说,四种做法比较??的模拟退火跑得快但是正确性有问题的状压DP跑得慢但是一定正确的状压DP时间复杂度很玄学的DFS+剪枝我就选择了搜索的做法先打个暴搜,70pts点击查看暴搜代码#include<bits/stdc++.h>usingna......
  • 判断数组arr1中是否包含和数组arr2的FieldName名称一样的,包含返回true,不包含返回false
     判断数组arr1中是否包含和数组arr2的FieldName名称一样的,包含返回true,不包含返回falseletarr1=[{index:0,tableField:{FieldName:date1}},{index:1,tableField:{FieldName:date2}},{index:2,tableField:{FieldName:date3}}];letarr2......
  • Halcon Tuple数组的增删查改
    read_image(Image33,'E:/Halcon数据/资源图片/33.png')dev_get_window(WindowHandle)dev_set_draw('margin')get_image_size(Image33,Width,Height)query_font(WindowHandle,Font)FontWithSize:=Font[0]+'-30'set_font(WindowHandl......
  • 01数组算法/代码随想录
    一、数组好久没写算法题,之前喜欢按着习惯选择刷题,很早以前就听说代码随想录,今天跟着代码随想录再过一遍算法1.1二分查找常见疑问middle一定是在[left,right]这个范围内标准代码不会越界,因为在elseif中出现越界后,下一次循环就不会通过左闭右闭区间代码示例public......