当前位置: 首页 > news >正文

英孚做网络作业的网站企石网站建设

英孚做网络作业的网站,企石网站建设,微网站设计与开发教程,国内优秀公司网站前言 回学校了,荒废了半天之后打算奋发图强猛猛刷题,找实习!赚钱!! 560. 和为 K 的子数组 - 力扣(LeetCode) 前缀法 哈希表 这个题解解释比官方清晰,截个图方便看,另一…

前言

  • 回学校了,荒废了半天之后打算奋发图强猛猛刷题,找实习!赚钱!!

560. 和为 K 的子数组 - 力扣(LeetCode)

  • 前缀法 + 哈希表

    • 这个题解解释比官方清晰,截个图方便看,另一个题解的代码简洁
    • class Solution:def subarraySum(self, nums: List[int], k: int) -> int:prefixSumArray = {0:1}  # 初始化一个字典,用于存储前缀和出现的次数,初始时前缀和为0出现了1次count = 0  # 初始化计数器prefixSum = 0  # 初始化前缀和为0for ele in nums:  # 遍历输入的nums列表prefixSum += ele  # 计算当前位置的前缀和subArray = prefixSum - k  # 计算符合条件的子数组和if subArray in prefixSumArray:  # 如果当前前缀和减去k的值在字典中count += prefixSumArray[subArray]  # 更新计数器,累加符合条件的子数组和的个数'''prefixSumArray.get(prefixSum, 0)在hash table里查找key,如果有返回对应的value,反之返回0 '''prefixSumArray[prefixSum] = prefixSumArray.get(prefixSum, 0) + 1  # 更新前缀和字典中前缀和出现的次数return count  # 返回符合条件的子数组和的个数
    • class Solution:def subarraySum(self, nums: List[int], k: int) -> int:# num_times 存储某“前缀和”出现的次数,这里用collections.defaultdict来定义它# 如果某前缀不在此字典中,那么它对应的次数为0num_times = collections.defaultdict(int)num_times[0] = 1  # 先给定一个初始值,代表前缀和为0的出现了一次cur_sum = 0  # 记录到当前位置的前缀和res = 0for i in range(len(nums)):cur_sum += nums[i]  # 计算当前前缀和if cur_sum - k in num_times:  # 如果前缀和减去目标值k所得到的值在字典中出现,即当前位置前缀和减去之前某一位的前缀和等于目标值res += num_times[cur_sum - k]# 下面一句实际上对应两种情况,一种是某cur_sum之前出现过(直接在原来出现的次数上+1即可),# 另一种是某cur_sum没出现过(理论上应该设为1,但是因为此处用defaultdict存储,如果cur_sum这个key不存在将返回默认的int,也就是0)# 返回0加上1和直接将其置为1是一样的效果。所以这里统一用一句话包含上述两种情况num_times[cur_sum] += 1return res

 239. 滑动窗口最大值 - 力扣(LeetCode)

  •  单调队列

    • 参考灵神的题解视频,单调队列的使用类似单调栈,复习一下C++实现
    • class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:ans = []q = deque()  # 双端队列for i, x in enumerate(nums):# 1. 入while q and nums[q[-1]] <= x:  # 非空并且当前值大于队尾q.pop()  # 弹出队尾,维护 q 的单调递减性q.append(i)  # 入队,存下标# 2. 出if i - q[0] + 1 > k:  # 队首已经离开窗口,弹出q.popleft()# 3. 记录答案if i >= k - 1:  # 至少过了窗口大小再记录# 由于队首到队尾单调递减,所以窗口最大值就是队首ans.append(nums[q[0]])return ans

 76. 最小覆盖子串 - 力扣(LeetCode)

  • 滑动窗口 + 哈希法

    • 这题之前也解过,这次可以有更简洁的思路,只用一个mp即可
    • class Solution:def minWindow(self, s: str, t: str) -> str:mp = collections.defaultdict(int)  # 避免不存在判空,默认0# 将需要匹配的字符数存入哈希for ch_t in t:mp[ch_t] += 1     lens, lent = len(s), len(t)count, res = lent, ""  # count记录匹配相等,完全匹配为0min_len = lens + 1  # 用于更新最小窗口长度l = 0  # 左边界# 最小滑窗,while里更新结果for r in range(lens):if mp[s[r]] > 0:count -= 1mp[s[r]] -= 1  # 消耗掉# 如果完全匹配成功,收缩左边界while count == 0:  if r - l < min_len:  # 如果窗口长度比之前的小就记录结果min_len = r - l + 1res = s[l:r+1]if mp[s[l]] == 0:  # 如果是要匹配的字符就增加countcount += 1mp[s[l]] += 1  # 还回去l += 1  # 收缩边界return res

后言

  •  快两周没碰代码了,果然还是生疏了,得持续地码,脚踏实地是解决焦虑的最佳手段
http://www.yayakq.cn/news/496097/

相关文章:

  • 苏州专业做网站较好的公司有哪些网站建设公司果动c
  • 申请企业资助建设网站广州计算机培训班
  • 网站正在建设中手机版杭州网站优化服务
  • 哪个网站可以做问卷智能手机软件开发培训
  • 做兼职在什么网站找比较好工地建筑模板尺寸
  • 国内做网站群平台的公司智能化建设网站
  • 网站推广宣传语wordpress 设置图片大小
  • 上海徐汇网站建设公司门户网站建设情况
  • 金花站长工具手机怎么做电子书下载网站
  • 金坛建设银行总行网站遵义网吧
  • 中山营销网站建设织梦如何做视频网站
  • 网站改版 百度收录wordpress 点击量排序
  • 设计网站公司力荐亿企邦网站建设山东聚搜网络一x
  • 做婚恋网站需要什么资质盘锦市住房和城乡建设厅网站
  • 网站域名密码信息网站设计方案
  • 浙江新华建设有限公司网站四川成都企业高端网站建设
  • 网站制作厂家有哪些龙华网站建设首页地址
  • 中小企业网站建设咨询wordpress导航彩条
  • 一般做一个网站专题页多少钱html编辑器哪个好用
  • 服务器硬件影响网站速度萧山中兴建设有限公司网站
  • python大型网站开发上海外贸营销网站建设
  • 网站架构设计英文翻译网页html
  • 淄博网站建设 熊掌号提高怎样做网站的外链
  • seo企业网站模板产品的营销渠道有哪些
  • 茂名seo站内优化开发软件用什么编程软件
  • 做资源网站有哪些手机网站建设设计6
  • 湖北建设厅网站怎么打不开win2003 iis做网站
  • 如何开始做婚恋网站推广产品最好的方式
  • 炫酷的网站赵朴初网站建设
  • 昆明网站建设 网络服务公众号开发图片太大上传怎么压缩图片