Amber代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

 1. 977.有序数组的平方 ,209.长度最小的子数组 

基本上没遇到什么困难 - 主要是掌握双指针的思想(双指针可以保留记忆和位置)和滑动窗口的思想

2. 59.螺旋矩阵II

主要是逻辑没有理清楚,在保留最后一个空格不赋值的逻辑后,代码变得十分简单。在看完视频之后第二次代码五分钟就写好了。注意后面的是startx和starty,因为是一个起始位置。

同时还有一个要注意的点是:变量的定义。第一次另一个没有写出来的原因是变量太少了,比如混淆了starty和y,一起使用了他们,导致逻辑不清楚。

总结:要注意边界感和变量的使用

Amber代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II_第1张图片

听课总结的笔记

Amber代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II_第2张图片

class Solution {
    public int[][] generateMatrix(int n) {

        int loop = 0;
        int[][] result = new int[n][n];

        int startx = 0;
        int starty = 0;
        int offset = 1;
        int number = 1;
        int x = 0;
        int y = 0;

        while (loop < n/2){

            for(y = starty;y < n-offset;y++){
                result[startx][y] = number;
                number++;
            }

            for(x = startx;x< n-offset;x++){
                result[x][y] = number;
                number++;
            }

            for (y=y;y>starty;y--){
                result[x][y] = number;
                number++;
            }

            for (x=x;x>startx;x--){
                result[x][y] = number;
                number++;
            }

            offset++;
            startx++;
            starty++;
            loop++;
        }

        if ( n%2 == 1){
            result[startx][starty] = number;
        }

        return result;

    }
}

总结

  • 困难:在977和209没有什么问题,但螺旋矩阵出现了问题,思路无法捋清。大概学习了2h左右。
  • 来源:代码随想录

你可能感兴趣的:(leedcode,算法,矩阵,数据结构,java,leetcode)