有序数组的平方
解题思路
最优的解法是通过双指针,由于该数组是一个非递减数列,我们只需要将数组的首尾两端作为两个指针的起始位置,然后进行比较就行。具体地讲,双指针所指向的值相互比较,把较大的值放入新的数组的开通,然后该指针往前(如果是在首端的指针,则往后)。重复这个过程直到双指针重合,别忘了重合的时候把指针指向的值放入数组。
知识点
双指针
心得
一开始做这道题的时候没看清是有序非递减数列,直接用暴力法解决。以后当遇到这种有序的比大小的题,可以尝试用双指针进行处理。
长度最小的子数组
解题思路
使用滑动窗口来解决,这个是用了一个非常巧妙的方法,由于我们要找一个长度最小的子数组,我们只需要控制两个指针作为一个窗口的头和尾,然后通过窗口内所有值的和与目标值进行比较来移动两个窗口,最后得到子数组。如果窗口内所有值的和大于目标值,则头指针移动,而尾指针保持每次往右移动一格即可。
知识点
滑动窗口,双指针
心得
这个题目有想到用双指针,但是没有捋清楚中间的逻辑。看了题解之后才知道具体该怎么写。
螺旋矩阵II
解题思路
题目中的螺旋矩阵是有规律的,重点的是每次矩阵转向的时候的下标需要确定,你会发现除了第一次转向时的下标和矩阵的维数n相同,每两次数组转向的时候,当前转向的下标和下次转向时的下标的距离会少1。举个例子,一个3维矩阵,它第一次转向的时候的下标为2(0,1,2,有三个),第二次转向时候的下标为4(3,4,有两个),第三次转向的时候下标为6(5,6,有两个),第四次转向的时候下标为7(一个),第五次转向的时候下标为8(一个)。所以我在一个循环内解决了这个问题。
知识点
数组,矩阵
心得
找出逻辑后,难点就在于实现了,废了我一个小时修好了bug。
总计时长 5h
标签:下标,DAY2,矩阵,II,数组,转向,随想录,指针 From: https://www.cnblogs.com/TKK-YLF/p/18263543