网站管理系统 php,免费的企业邮箱怎么申请,wordpress扁平化风格主题,微信网站开发 js框架思路#xff1a;此题思路就是绕圈遍历#xff0c;全靠条件处理技巧#xff0c;重点要清楚的就是循环不变量#xff1a;左闭右开#xff08;即拐弯处的一个数#xff0c;留给第二行处理#xff09; 以下是代码随想录的作者的一张图片#xff0c;每次for循环#xff0c;… 思路此题思路就是绕圈遍历全靠条件处理技巧重点要清楚的就是循环不变量左闭右开即拐弯处的一个数留给第二行处理 以下是代码随想录的作者的一张图片每次for循环只遍历相同颜色的元素就是此题的左闭右开原则。
class Solution {public int[][] generateMatrix(int n) {int [][] ans new int [n][n];int loop 0; //while循环次数int curNum1; //当前赋值大小int start 0; //每圈开始行,列的起始位置如1,1int i0; //当前遍历到的行位置int j0; //当前遍历到的列位置//循环不变量左闭右开即拐弯处的一个数留给第二行处理//loop是while循环次数判断完边界后loop1加1后的loop作为每行后半截不要遍历的个数while(loop n/2){ //1、从左到右遍历结束时j是多加了1的刚好作为下一个的列//每轮开始i,j都要重新赋值初始值为start,因为上一轮结束后i,j变为0了而第二轮是从1开始for(jstart; jn-loop;j ){ans[start][j] curNum;}//2、从上到下遍历j刚好用上面加完的//每轮开始i,j都要重新赋值初始值为start,因为上一轮结束后i,j变为0了而第二轮是从1开始for(istart; in-loop; i) {//每轮开始i,j都要重新赋值初始值为startans[i][j] curNum;}//3、从右到左此时j的初始值就是j本身所以for循环 j没有赋初始值for(; jstart;j--){ans[i][j] curNum;}//4、从下到上此时i的初始值也是i本身同理for(; istart; i--){ans[i][j] curNum;}start;}//n是奇数时剩最中间的一个值赋值if(n%21) {ans[start][start]curNum;}return ans;}
}