Day2-[滑动窗口]你给我领悟
admin
2024-01-29 09:00:46
0

代码随想录算法训练营Day2

977, 有序数组的平方

给了提示双指针,一遍过芜湖,不多解释.

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:# 提示two pointers 双指针# Constraints: nums非空,inta,b = 0,len(nums) - 1res = []while a <= b:if abs(nums[a]) >= abs(nums[b]):res.append(nums[a] ** 2)a += 1elif abs(nums[a]) < abs(nums[b]):res.append(nums[b] ** 2)b -= 1return res[::-1]# TC:O(N)# SC:O(N)

209, 长度最小的子数组

for循环指针终止位置, while sum(nums[a:b]) >= target更新窗口起始位置的指针, a += 1.

第一遍O(N^2)超时,第二遍sum(nums[a:b])超时

sum(nums[a:b])超时解法

# 超时解法
class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:if sum(nums) < target:return 0windowLen = len(nums)a = 0for b in range(1,len(nums)+1):  # for循环标记的是终止位置while sum(nums[a:b]) >= target:# print(a,b,nums[a:b])windowLen = min(b - a, windowLen)a += 1return windowLen用sum(nums[a:b])也会超时

正确解法

class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:if sum(nums) < target:return 0windowLen = len(nums)a = 0sumL = 0for b in range(1,len(nums)+1):  # for循环标记的是终止位置sumL += nums[b-1]while sumL >= target:# print(a,b,nums[a:b])windowLen = min(b - a, windowLen)sumL -= nums[a]a += 1return windowLen# TC:O(N)# SC:O(1)

请问一下, 209.长度最小的子数组,使用滑动窗口,时间复杂度O(N)大概能想明白;best case是sum(nums) == target,只需要for循环求一次累加,时间复杂度还是O(N);那worst case是什么情况?

比较容易困惑的点在于“移动指针a的次数”,因为每次移动都需要比较sumL >= target,来决定是否要 pop, 所以很多人会认为worst case time complexity 是 O(kn),其实不然。因为当你这一次pop了k个数以后,不会再对这k个数进行操作.

换一种角度看,因为push函数里的while循环里本质上是pop出不可能的candidate,而每个数只会被pop一次。

因此,从整个array的角度来看这个while的循环条件最多只会比较2n次(考虑到会有一次比较不成立所以多考虑一次),因此复杂度为O(n)。Example:比如数组里所有元素都是target,第一次sumL >= target成立并删除元素,第二次sumL >= target不成立进入下一个b的循环.这样是O(2N).

59, 螺旋矩阵II

不太会,再想想

相关内容

热门资讯

装载8000万桶原油的超级油轮... 6月19日,财闻海外资讯消息,载有近8000万桶石油的超级油轮正停泊在波斯湾,一旦交易商和船东发出指...
原创 刚... 法国总统马克龙最近的状态,用一句哭笑不得来形容再贴切不过。原本他一门心思准备在对华贸易议题上做文章,...
惠誉:将宁德时代的发行人主体评... 6月18日,惠誉国际评级有限公司(下称“惠誉”)上调宁德时代(300750.SZ/03750.HK)...
临商银行“临商红”青年志愿服务... 为大力弘扬践行沂蒙精神,临商银行联合市委金融工委、市委市直机关工委、共青团临沂市委共同打造了“临商红...
SpaceX 上市:SPCX ... EBC Financial Group 自开盘起即向全球交易者提供双向交易通道,参与这一史上最大规模...
甘肃电气集团长开公司荣获202... 近日,在2026年度中国中压电器行业权威评选活动中,甘肃电气集团长开公司荣获中国中压电器市场“卓越贡...
是80%的工位面向海景,马岩松... 腾讯总部园区 摄影:张超 深圳大铲湾,腾讯总部园区“企鹅岛”于5月底首次面向公众开放。 三座由马岩松...
日本经济专家:加息难以扭转日元... 日本央行近日宣布将政策利率自0.75%上调至1.0%,为31年来最高水平。日本经济专家认为,目前日元...
黄金跌2%失守4130美元,白... 6月19日午间,黄金白银仍未止跌。截至13时,现货黄金跌2%,报4124.57美元/盎司,失守413...
原创 中... 2026年6月这个节点意味格外不同。4月伊朗与以色列那场脆弱的停火刚撑了不到两个月,6月8日两边又对...
Manus回购方案浮出水面:中... 文 | 强调Next 据外媒The Information6月18日报道,Manus的早期中国投资...
2026黄金回收避坑,郑州72... 来源:黄冈新闻网 一、郑州黄金回收市场现状与高价引流投诉占比 据郑州市 12315 消费维权平台 2...
原创 房... 2026年6月16日国家统计局公布的5月份70城房价数据显示,一线城市新建商品住宅环比上涨,二三线城...
“生活成本太高了!”全球多地年... “白天当会计,晚上跑网约车,周末送外卖,假期摆地摊……” 如今,这种“1+N”(“主业+副业”)的多...
字节之后,天数智芯的下一个客户... 今年预计交付5万片,销售部门或迎来一轮调整|图源:豆包AI 作者/ IT时报 毛宇 编辑/ 郝俊慧 ...
聚焦尾货赛道!佛山(高明)“泛... 6月18日下午,佛山(高明)“泛家居国际尾货直播基地”项目合作签约仪式在高明鸿创数字科技产业园举行。...
流量退潮,文娱市场终于“醒”了 近段时间,一场场舆论风波在文娱市场激起千层浪。老牌综艺《奔跑吧》深陷口碑泥潭,常驻嘉宾白鹿被“考古”...
原创 世... 三十年前的世界五百强榜单,中国只有3家企业上榜,隔壁日本整整149家,美国151家。那时候的世界五百...
第四套人民币小全套伍元、贰元、... 第四套人民币小全套伍元、贰元、壹圆纸币收藏鉴赏 第四套人民币是我国改革开放时代的标志性货币,承载了八...
感觉血糖还行就没事?不重视这五... 很多糖友觉得,只要平时测的血糖值看着“还行”,身体也没什么不舒服,就万事大吉了。 这是一个要命的误区...