Day2—— 59.螺旋矩阵 977.有序数组的平方

 

目录

前言

一、997.有序数组的平方

二、59.螺旋矩阵

 

题目描述:

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

 

1.解题思路:

总结

 


前言

每日文案:

智者的梦再美,也不如愚人实干的脚印。


 

一、997.有序数组的平方

题目描述:

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

题目来源:

力扣

1、解题思路(双指针):

我们先观察题目,发现是一个升序的数组,我们要把它平方,再重新排序,因为数组里面是有负数的,我们平分只会大小可能就会改变,比如-100<10,but (-100)*(-100)>10*10,所以我们要想办法先平分再排序。

由于它是有顺序的,我们很显然可以看出,平方之后最大的数只可能在两端出现,因为第一位是最小的(负数最小平分就有可能是最大的),最右边是最大的正数,所以只能是他们两个竞争。

代码如下:

int* sortedSquares(int* nums, int numsSize, int* returnSize) {

    int k = numsSize-1;
    int*p = (int*)malloc(sizeof(int) * numsSize);        //申请空间
    * returnSize=numsSize;                            //返回数组长度
    for (int i = 0, j = numsSize - 1; i <= j;)
    {
        if (nums[i] * nums[i] > nums[j] * nums[j])        //两端比较大小,大的入新空间
        {
            p[k] = nums[i] * nums[i];
            i++;
            k--;
        }
        else                               
        {
            p[k] = nums[j] * nums[j];
            j--;
            k--;
        }
    }
   
    return p;
}

二、59.螺旋矩阵

 

题目描述:

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

 

1.解题思路:

我们先观察矩阵,发现它是一圈一圈地走,从左往右,上往下,右往左,下往上走,数字逐渐递增,属实是回型。那么我们就要想办法设置合适的循环来解这道题了,这里我用了边界法(按我自个的理解来命名哈)。
一入循环深似海,一定要判断好边界!

代码如下:

int** generateMatrix(int n, int* returnSize, int** returnColumnSizes){

    *returnColumnSizes=(int *)malloc(sizeof(int)*n);
    *returnSize=n;                                        //一位长度
    int **ans=(int **)malloc(sizeof(int*)*n);            //申请二位数组空间
    for(int i=0;i=l;j--)
        {
            ans[r][j]=count++;
        }
        for(int i=r-1;i>=l+1;i--)
        {
            ans[i][l]=count++;
        }
        l++;
        r--;
    }

    if(n%2!=0)
    ans[l][r]=n*n;
    return ans;

}

 


总结

今天是算法训练的第二天,希望每天进步一点点,写得不好的地方,敬请指教。

 

你可能感兴趣的:(算法训练,矩阵,python,机器学习)