您的位置:首页 > 财经 > 金融 > 十大利润最高的实体店_山东广播电视台_网站搜索引擎优化方案的案例_公司建网站需要多少钱

十大利润最高的实体店_山东广播电视台_网站搜索引擎优化方案的案例_公司建网站需要多少钱

2025/4/30 8:28:08 来源:https://blog.csdn.net/yin2567588841/article/details/147520451  浏览:    关键词:十大利润最高的实体店_山东广播电视台_网站搜索引擎优化方案的案例_公司建网站需要多少钱
十大利润最高的实体店_山东广播电视台_网站搜索引擎优化方案的案例_公司建网站需要多少钱

一、560. 和为 K 的子数组

在这里插入图片描述

  • 思路:这就是一道典型的前缀和的题
  • 代码:
class Solution:def subarraySum(self, nums: List[int], k: int) -> int:presum = [0] * (len(nums) + 1)for i, x in enumerate(nums):presum[i + 1] = presum[i] + x  # 前缀和序列需要n+1个ans = 0cnt = defaultdict(int)for p in presum:ans += cnt[p - k]cnt[p] += 1return ans

二、239. 滑动窗口最大值

在这里插入图片描述

  • 思路1:暴力。这道题如果暴力求解其实很简单,根据描述写就行了,但是复杂度比较高, O ( n 2 ) O(n^2) O(n2)
  • 代码
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:if len(nums) == 1:return numsres = []left, right = 0, kwhile left <= (len(nums)-k):res.append(max(nums[left:right]))left+=1right+=1return res
  • 思路2:单调队列。单调队列分为3步
    1. 入(元素入队尾,并维护单调性(看需要保持单增,还是单减))
    2. 出(元素离开队首)
    3. 记录答案
  • 代码
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:ans = []q = deque()for i, x in enumerate(nums):# 入while q and nums[q[-1]] <= x:q.pop()  # 删除比x小的元素(找最大值,比x小的就不用看了)q.append(i)  # 加入到队尾(这个队列也是单调的了)# 出if i - q[0] >= k:  # 队首需要离开了(滑窗滑过了)q.popleft()# 记录if i >= k - 1:ans.append(nums[q[0]])retrun ans 

三、76. 最小覆盖子串

在这里插入图片描述

  • 思路:这里很神奇,Counter()这玩儿意可以比较,当然如果没法比较也可以自己写一个比较函数
  • 代码:
class Solution:def minWindow(self, s, t):ansLeft, ansRight = -1, len(s)cntS = Counter()cntT = Counter(t)left = 0for right, word in enumerate(s):cntS[word] += 1while cntS >= cntT:if right - left < ansRight - ansLeft:ansLeft, ansRight = left, rightcntS[s[left]] -= 1left += 1return "" if ansLeft < 0 else s[ansLeft:ansRight+1]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com