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

不太会,再想想

相关内容

热门资讯

A股异动丨避险情绪升温促金银价... A股市场黄金股强势,其中,四川黄金、招金黄金涨停,山金国际涨超6%,中金黄金、西部黄金涨超4%。 消...
服刑7年获判无罪,女商人林惠荣... 澎湃新闻记者 王选辉 1月19日,澎湃新闻从福建女商人林惠荣处了解到, 其向法院申请的国家赔偿,经漳...
康骨堂 骨质增生怎么保养 骨质增生(骨关节炎)可以通过多种方式进行保养和治疗,常见方法包括生活方式调整、物理疗法、非甾体抗炎药...
原创 中... 1月15日,中银基金发布公告称,联席投资总监(固定收益)邢科因个人原因离任。 公开资料显示,邢科于...
商汤在厦门成立智能开发公司 注... 天眼查工商信息显示,1月19日,厦门商汤智能开发有限公司成立,法定代表人为马堃,注册资本3000万美...
马斯克:AI5芯片设计基本完成... 近期,特斯拉CEO埃隆·马斯克密集披露芯片战略相关信息,这表明特斯拉正在调整其AI芯片与超级计算平台...
“俩西红柿要10块钱”?专家:... “俩西红柿要10块钱”“鸡蛋都快配不上西红柿啦”……近段时间,全国多地西红柿价格明显上涨,引发市场高...
圣贝拉集团今日股价涨超12%,... 1月19日,全球家庭护理行业龙头圣贝拉集团(股票代码:2508.HK)发布公告,正式宣布与服务机器人...
刘世锦:建议实施进出口基本平衡... 1月17日,中国环境与发展国际合作委员会中方首席顾问、国务院发展研究中心原副主任刘世锦在第二十七届北...
阳光电源逐光出海,锚定全球储能... 全球能源转型浪潮澎湃,储能作为构建新型电力系统的关键支撑,其战略地位日益凸显。在这场关乎未来能源格局...
封关整一个月,海南卖爆了 1 2025年12月18日,海南自贸港全岛正式封关。 今天是2026年1月19日,海南封关整整一个月...
容积率下调,体量23万㎡!福州... 海西房产网(微信公众号:fjhxfcw)消息:为传承弘扬“中国福州国际招商月”思想精髓,福州市招商办...
比格比萨赴港IPO,创始人赵志... 瑞财经 严明会 1月16日,比格餐饮国际控股有限公司(以下简称:比格比萨)递交招股书,冲击港股IPO...
罗永浩被禁言后现身颁奖典礼,领... 1月19日,罗永浩于谦拒领终身成就奖的相关话题登上热搜。 1月18日,在B站年度百大UP主颁奖典礼...
原创 G... 如果说欧盟是个戏班子,每次开会就像上演一场戏,那G7就更像是个马戏团,所有的成员都是戏精上身,开会时...
原创 赚... 最近,关于俄罗斯暂停对中国电力出口的消息引发了广泛的讨论。西方媒体迅速抓住这个机会,宣称中俄合作出现...
原创 指... 现阶段的市场已经进入到“降温”的调整时期,针对A股“易跌难涨”的特性,这个位置千万不要“空手接白刃”...