螺旋矩阵||真的很有趣!(蓝桥杯宝贝们看过来)

献丑了,画了个图,如果图看不同,没关系,我们还有注释

class Solution {
public:
   vector<vector<int> > generateMatrix(int n)
{
	vector<vector<int> >num(n,vector<int>(n,0)); 
	int startX=0,startY=0;
	int x=0,y=0;
	int count=1;//由于是左闭右开,要减去顶角元素 
	int mark=1;
    int time=n/2;
	while(time--)
	//转的圈数,这个分奇偶
	//如果是奇数最后单独给中心元素赋值
	{
        x=startX;
        y=startX;//为啥这里还要定义嘞?
        //你想现在第一圈转完了,是不是要转第二圈的了,现在虽然下面y=startY,是替换了,但你x还在第一圈对角线第一个元素停留这,呢不就不限循环了,所以x这里也要跳到第二圈的对角线元素的位置
		for(y=startY;y<n-count;y++)
		{
			num[x][y]=mark++;//现在x是固定的等于startX也可以写为startX	
		}
		for(x=startX;x<n-count;x++)
		{
			num[x][y]=mark++;//这里y是固定的,而且由于从上次循环结束y++了,所以直接就是顶角元素
		}//结束后x=n,y=n此时都为最大值
		for(y;y>startY;y--)//从右往前移
		{
			num[x][y]=mark++;//同理x是固定的
		}
		for(x;x>startX;x--)//现在是从下往上移动
		{
			num[x][y]=mark++;//同理y是固定的
		}
		startX++;
		startY++;
		count++;
	}
	if(n%2!=0)
	{
		num[startX][startY]=n*n;//填充n为奇数的矩阵中心 
	 }
	 return num; 
    }
};

 

学废了吗?快点去试试吧!戳这里----->题目直达链接

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值