代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II(C语言)
Leetcode :977.有序数组的平方
题目链接: 977.有序数组的平方
思路:
将目标区间的中间点向右取整,而不是向下取整。这样做可以减少代码逻辑上的判断,使得代码更加简洁。同时,在比较候选值与目标值的大小时,我们使用了小于等于号(<=)而非严格的小于号(<)。这是因为如果目标值存在,那么它可能出现在目标区间的最后一个位置,此时需要将找到的第一个大于目标值的元素的下标往回调整一位。最后,根据最后确定的左边界,我们可以判断目标值是否存在。
程序代码如下:
程序算法示意图:
============================================================================
Leetcode :209.长度最小的子数组
题目链接: 209.长度最小的子数组
思路:
将目标区间的中间点向右取整,而不是向下取整。这样做可以减少代码逻辑上的判断,使得代码更加简洁。同时,在比较候选值与目标值的大小时,我们使用了小于等于号(<=)而非严格的小于号(<)。这是因为如果目标值存在,那么它可能出现在目标区间的最后一个位置,此时需要将找到的第一个大于目标值的元素的下标往回调整一位。最后,根据最后确定的左边界,我们可以判断目标值是否存在。
程序代码如下:
程序算法示意图:
============================================================================
Leetcode :59.螺旋矩阵II
题目链接: 59.螺旋矩阵II
思路:
将目标区间的中间点向右取整,而不是向下取整。这样做可以减少代码逻辑上的判断,使得代码更加简洁。同时,在比较候选值与目标值的大小时,我们使用了小于等于号(<=)而非严格的小于号(<)。这是因为如果目标值存在,那么它可能出现在目标区间的最后一个位置,此时需要将找到的第一个大于目标值的元素的下标往回调整一位。最后,根据最后确定的左边界,我们可以判断目标值是否存在。
程序代码如下:
程序算法示意图:
============================================================================