代码随想录算法训练营第二天 | 209.长度最小的子数组、 59.螺旋矩阵II
1、209.长度最小的子数组
这题一开始没什么思路,所以直接看了视频,了解了暴力解法和滑动窗口解法。
我觉得给我很大启发的是
1、这个关于遍历是头节点还是尾部节点
2、对于sum退出就应该减少的步骤
3、if变成while的提醒
还有很关键的,要学会引用INT_MAX INT_MIN
可以用当前 = min(当前,新加入值)来不断更新最小值
也可也用result = result < subLength ? resutl :subLength
不断更新
并且结尾的时候如果没有被赋值则,保持0,非常好用
return result == INT32_MAX ? 0 : result;
2、59.螺旋矩阵II
这个其实有两个提醒我的地方,我其实一看题就觉得麻烦,不想做,对于一些含有多个变量的代码,头脑很不清晰,我还在为单数复数,打算分开处理,想着就烦。
这个题给我的启示有:
首先这是一个有多个圈的遍历,所以最外层的遍历是n/2,所以第二点就是奇数和偶数的不同就在于中间会多1个,所以要引入mid。
然后关于变动,静下心来思考,变动的变量有每一条直线起始点,和结尾点,并且四条边都维持着统一的开闭区间.结尾点已经有n了那就引入offeset,起始点没有就引入startx,starty, 并且这三个都要稳定的每一圈++
最后是返回值,我还在想cout 【x】【y】 要求直接传指针就行,别多想。