leetcode刷题记录day 2--有序数的平方和

有序数的平方和

题目要求:

(1)螺旋矩阵:将数字n放入螺旋数组中,按照顺时针顺序螺旋排列的正方形矩阵。核心要点在于考虑边界的一致性,防止因边界的问题导致出错,为了能做成一个正方形,只能是加头不加尾。
(2)将一个有序数组的平方按照从小到大排位一个有序数组,因为数组内有负数,所以可能影响整个有序数组的序列。主要依赖于有序数组的特性,因为本身是有序数组,但可能存在负数,因此每一步的最大值主要存在于数组的头部或者尾部,因此只需比较头部与尾部内容即可。

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int> res(nums.size());//创建一个新的数组容器,用与存放返回的结果
        int k=nums.size()-1;//新数组的值,因为数组要求从小到大,所以该值应该从大到小
        for(int i=0,j=nums.size()-1;i<=j;){//i为原始组中需要比较的左侧的值,j为原始数组中需要比较的右侧的值,终止条件为两值相等的时候才行
            if(nums[i]*nums[i]<=nums[j]*nums[j]){
                res[k]=nums[j]*nums[j];
                j--;
                k--;
                
            }
            else{
                res[k]=nums[i]*nums[i];
                i++;
                k--;
            }
        }

        return res;




    }


};

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n,vector<int>(n,0));
        int startx,starty=0;
        int loop=n/2;
        int mid=n/2;//如果是奇数最终需要单独计数一次
        int count=1;//计数器
        int offest=1;//边界值,每次循环右边收缩一
        int i,j;
        while(loop--){
            i=startx;//每轮开始需要计数需要考虑,
            j=starty;
            for(j=starty;j<n-offest;j++){//
                res[startx][j]=count++;
            }
            for(i=startx;i<n-offest;i++){
                res[i][j]=count++;
            }
            for(;j>starty;j--){
                res[i][j]=count++;
            }
            for(;i>startx;i--){
                res[i][j]=count++;
            }
            startx++;
            starty++;

            offest+=1;            
        }
        if(n%2){
            res[mid][mid]=count;
        }
        return res;

    }
};```




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值