代码随想录算法训练营第二天|977. Squares of a Sorted Array 209.Minimum Size Subarray Sum 59.Spiral Matrix II

第二天打卡,首先是第一题: 977.  有序数组的平方。

这个可以有两种解法,首先能够想到的就是brute force直接把数组中的每个数平方之后排序,

直接使用了java自带的Arrays.sort()来排序。

第二种的方法是使用双指针来排序。因为数组里面如果有负数的话,平方过后得到的数字可能是比较大的,这种情况就很适合使用双指针来解题。此外,针对时间复杂度来说,这种解法也更加合适。 左右进一步遍历的结果是由左右两边哪个值比较大决定的(i++,j--), 代码如下:

在这里学到的一点就是,当计算这个数的平方时,可以使用l++和r--来对下一步要操作的数字进行进位,在res[j--] = nums[l] * nums[l++];中, 仍然是得到的是这个数字l的平方,然后l++的作用就是使用num[l]的当前值进行计算,然后将l增加1。这个答案是使用j来作为一个另外限制来逐渐缩小数组的运算和排序。

第二题:209.Minimum Size Subarray Sum

这题学到了一个新名字,滑动窗口,感觉也有点像之前讲的双指针和快慢指针,来计算这个数组。在for 循环中,只用一个for循环的话,j指向的是终止位置。还需要有个result去不断取得最小值来更新结果,故这也是在for循环里的。代码如下:

第三题 :59.Spiral Matrix II

题目如下;很重要的一点:边界问题。坚持贯彻左关右开的区间,这样可以避免将四角重复遍历。

答案如下:其实还算比较简单的,重要的是每条边的处理规则需要统一。

待做事项:复习之前的题目,总结数组,附上看到的思维导图,很不错。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值