首页 > 其他分享 >day2-双指针-977--59

day2-双指针-977--59

时间:2023-01-12 06:55:25浏览次数:51  
标签:977 count startx starty 59 -- res int

 

暴力解法

 

 

 

 

 

 

螺旋矩阵,边界条件有点多,要好好分析才可以

 

 

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n,vector<int>(n,0));
        int startx=0,starty=0;//定义每循环一个圈的起始位置
        int loop=n/2;
        //每个圈循环几次,例如n为奇数3,那么loop=1
        //只循环一圈,矩阵中间的值需要单独处理
        int mid=n/2;//矩阵中间的位置,例如n为奇数3
        //中间的位置就是(1,1),n为5,中间的位置为(2,2)
        int count=1;//用来给矩阵中的每一个空格赋值
        int offset=1;//需要控制每一条边遍历的长度
        //每次循环右边界收缩一位
        int i,j;
        while(loop--){
            i=startx;
            j=starty;
            //下面开始的四个for就是模拟转了一圈
            //模拟填充上行从左到右(左闭右开)
            for(j=starty;j<n-offset;j++){
                res[startx][j]=count++;
            }
            //模拟填充右列从上到下,左闭右开
            for(i=startx;i<n-offset;i++){
                res[i][j]=count++;
            }
            //模拟填充下行从右到左,左闭右开
            for(;j>starty;j--){
                res[i][j]=count++;
            }
            //模拟填充左列,从下到上
            for(;i>startx;i--){
                res[i][j]=count++;
            }
            //第二圈开始的时候,起始位置要各自+1
            //例如第一圈的起始位置是(0,0)
            //第2圈的起始位置是(1,1)
            startx++;
            starty++;
            //offset控制每一圈里每一条边遍历的长度
            offset+=1;
        }
        //如果n为奇数的话,需要单独给矩阵最中间的位置赋值
            if(n%2){
                res[mid][mid]=count;
            }
            return res;
    }
};

 

标签:977,count,startx,starty,59,--,res,int
From: https://www.cnblogs.com/bojiandkake/p/17045333.html

相关文章

  • 0/1分数规划模型
    0/1分数规划模型给定n个物品,每个物品有两个权值ai,bi,从这n个物品选取k(0≤k≤n)个,使得\[\frac{\sum_{i=1}^{k}{a_i}}{\sum_{i=1}^{k}{b_i}}\]最大.对于该类......
  • 「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
    作者:贺科学(晨末)背景纵观软件研发的发展历程,如果说“业务需求开发”是核心主线的话,那么研发效能建设就是这一核心主线之外最大的一条支线。每个历史阶段的研发效能所面对......
  • Leaflet.js | Map类属性与方法
    1、初始化L.map(<String>id,options?)//用地图div的id创建L.map(<HTMLElement>el,options?)//用地图div的name创建//简单示例//initializethemaponthe......
  • 2023-01-11 多头萌发使用中出现的问题
    首先看一下大级别,也就是你做的级别5分钟的大2个级别,也就是4h,4h是铁丝网形态。注意这种形态出现的时候,最好的交易是不交易。   30分钟是一个上升线段。   最......
  • Codeforces Edu Round 106 Div2
    解题A.DominoonWindowsill这个题给一个2xn的方格,一个行有k1个白块,第二行有k2个白块,那么现在有w个2x1的白块和b个2x1黑块,白对白,黑对黑,问能不能全放下这个就是判断下白......
  • LLVM ISA指令选择与实现
    LLVMISA指令选择与实现LLVM指令的选择对指令选择过程中一些代码的解释:   1、这里的指令选择发生在SelectionDAG阶段的后段,即DAG图已经转成了目标机器的DAG并完成了......
  • 【table master mmocr】Windows下模型训练的配置
    processed_data就是mmocr_pubtabnet_recognition,注意统一命名由图可以看出,那个processed_data就是mmocr_pubtabnet_recognition,而且后面后缀_0927之类的都是日期,可能是......
  • CS:APP--Chapter05 : optimizing program performance (part 2)
    CS:APP--Chapter05:optimizingprogramperformance(part2)标签(空格分隔):CS:APP目录CS:APP--Chapter05:optimizingprogramperformance(part2)8.loopuprollin......
  • Leaflet.js | 官方控件Control
    1、比例控件一个简单的比例控件,以公制(m/km)和英制(mi/ft)系统显示当前屏幕中心的比例,可扩展。使用示例L.control.scale().addTo(map);创造构造描述L.contr......
  • 什么是Http? http和https的区别
    一、HTTPHTTP (HyperTextTransferProtocol),即超文本运输协议,是实现网络通信的一种规范在计算机和网络世界有,存在不同的协议,如广播协议、寻址协议、路由协议等等...........