2 第一章数组 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 Day2

977.有序数组的平方

力扣

 这道题目最开始我是认为直接每个数平方然后再重新排序。这样可以通过,但是有更简便的方法,双指针利用了排序数组的思想,最大的数只能从数组的首尾两端产生。所以新建一个数组然后每次都放进去即可。

209.长度最小的子数组

力扣

 题目属于典型的滑动窗口问题,从最开始的一直往后找知道找到合适的结点。我这道题目最开始少考虑了当他没有找到符合题目要求的数组,直接返回了res,所以出错。

59.螺旋矩阵II

力扣

class Solution {

public:

    vector<vector<int>> generateMatrix(int n) {

        vector<vector<int>> res(n,vector<int>(n,0));

        int loop = n/2;

        int startx = 0;

        int starty = 0;

        int i=0;

        int j = 0;

        int offeset = 1;

        int count = 1;

        while(loop--){

            i = startx;

            j = starty;

            for(;j<n-offeset;j++){

                res[startx][j] = count;

                count++; 

            }

            for(;i<n-offeset;i++){

                res[i][j] = count;

                count++;

            }

            for(;j>=offeset;j--){

                res[i][j] = count;

                count++;

            }

            for(;i>=offeset;i--){

                res[i][j] = count;

                count++;

            }

            startx++;

            starty++;

            offeset++;

        }

        if(n%2 != 0){

            int mid = n/2;

            res[mid][mid] = n*n;

        }

        return res;

    }

};

这道题目主要注意每次循环打印的时候保持一个不变量。要么左闭右开,要么左闭右闭。我这道题目最开始出现的问题是i和j的含义没搞清楚。。。我将他们的含义弄反了造成出错。

数组总结:

我们需要记住的是,在数组中,整体的内存都是连续的,我们一旦确定了数组的大小就不能改变了。增删元素都需要对其余元素进行移动。

关于数组的问题,一般常见的就是二分查找,滑动窗口,快慢指针,注意循环不变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值