第一章 数组part02
977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
977.有序数组的平方
双指针法,平方数组为两边大中间小。
209.长度最小的子数组
第一想法暴力两个for循环。
学习双指针的滑动窗口法。
59.螺旋矩阵II
坚持循环不变量原则,左闭右开。
这道题纯粹考验对过程的控制能力。
一个循环是一圈,注意奇数时最中间只有一个。
1 class Solution { 2 public int[][] generateMatrix(int n) { 3 int loop = 0; // 控制循环次数,每次循环填充一圈 4 int[][] res = new int[n][n]; // 答案数组初始化 5 int start = 0; // 每次循环的开始点(start, start) 6 int count = 1; // 定义填充数字 7 int i, j; 8 while (loop++ < n / 2) { // 判断边界后,loop从1开始 9 // 模拟上侧从左到右 10 for (j = start; j < n - loop; j++) { 11 res[start][j] = count++; 12 } 13 // 模拟右侧从上到下 14 for (i = start; i < n - loop; i++) { 15 res[i][j] = count++; 16 } 17 // 模拟下侧从右到左 18 for (; j >= loop; j--) { 19 res[i][j] = count++; 20 } 21 // 模拟左侧从下到上 22 for (; i >= loop; i--) { 23 res[i][j] = count++; 24 } 25 start++; 26 } 27 if (n % 2 == 1) { // 奇数时填充中间一个 28 res[start][start] = count; 29 } 30 return res; 31 } 32 }
标签:count,start,++,day02,代码,随想录,int,res,loop From: https://www.cnblogs.com/allendon/p/17467945.html