美文网首页
leetcode-day02-数组

leetcode-day02-数组

作者: 独孤蝴蝶 | 来源:发表于2023-06-07 20:21 被阅读0次

    有序数组的平方

    题解:

    本题的题意是要求数组中每个数字的平方组成的新数组,且是非递减的。我们知道,给定的数组是非递减的,数组中的数字是有正负之分的,正数是越往右越大,负数是越往左越小,但是其平方可不是这样的,也就是说最小的数的平方不一定比最大数的平方小,因此我们知道,数组中平方最大的数字一定是在数组的两端,所以此题采用双指针法,从数组的两端开始,比较两者之间数子平方的大小,大的数放到一个定义的新的数组result的最后,依次从后往前放。

    代码:

    长度最小的子数组

    题解:

    此题也可使用双指针方法,定义两个指针left, right,使用一层for循环用来遍历整个数组,也即移动右指针right,根据题意,我们在移动的过程中要计算right遍历过的数据之和,然后和目标值就行判断,再次看题,寻找的是长度最小的连续子数组,所以我们定义个存储这个长度的变量res,赋一个最大初始值;然后减去左指针指向的值,移动左指针,直到找到最小的连续子数组,此种处理方式形似移动窗口,所以叫滑动窗口

    代码:

    螺旋矩阵 ii

    题解:

    给定一个正整数n,生成一个包含1到n平方的所有元素,首先我们定义一个n * n的数组,定义一个初始坐标(startx, starty)= (0, 0),模拟的过程如下:

    1.填充上行从左到右

    2.填充右列从上到下

    3.填充下行从右到左

    4.填充左列从下到上

    每次填充采用左闭右开的原则,我们最外层的遍历只需要遍历到数组的中间即可,遍历次数为n // 2,

    形式1填充,从左到右,横坐标不变,纵坐标变,nums[startx][i]

    形式2填充,从上到下,横坐标变,纵坐标不变,nums[i][n - offset]

    形式3填充,从右到左,横坐标不变,纵坐标变,且是逆序遍历nums[n-offset][i]

    形式4填充,从下到上,横坐标变,纵坐标不变,且是逆序遍历, nums[i][starty]

    还要考虑一种场景:就是n为奇数的情形,然后给中心点给值

    相关文章

      网友评论

          本文标题:leetcode-day02-数组

          本文链接:https://www.haomeiwen.com/subject/juynedtx.html