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

梅州市住房与城乡建设局网站windows7系统优化工具

梅州市住房与城乡建设局网站,windows7系统优化工具,做网站的公司成都,武昌网站建设价格多少钱表现良好的最长时间段 难度:中等 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这…

表现良好的最长时间段

难度:中等

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。

我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。

所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。

请你返回「表现良好时间段」的最大长度。

示例 1:

输入:hours = [9,9,6,0,6,6,9]
输出:3
解释:最长的表现良好时间段是 [9,9,6]。

示例 2:

输入:hours = [6,6,6]
输出:0

前置知识:前缀和

对于数组 nums\textit{nums}nums,定义它的前缀和 s[0]=0\textit{s}[0]=0s[0]=0s[i+1]=∑j=0inums[j]。\textit{s}[i+1] = \sum\limits_{j=0}^{i}\textit{nums}[j]。s[i+1]=j=0inums[j]
例如 nums=[1,2,−1,2]\textit{nums}=[1,2,-1,2]nums=[1,2,1,2],对应的前缀和数组为 s=[0,1,3,2,4]s=[0,1,3,2,4]s=[0,1,3,2,4]

通过前缀和,我们可以把子数组的元素和转换成两个前缀和的差,即

∑j=leftrightnums[j]=∑j=0rightnums[j]−∑j=0left−1nums[j]=s[right+1]−s[left]\sum_{j=\textit{left}}^{\textit{right}}\textit{nums}[j] = \sum\limits_{j=0}^{\textit{right}}\textit{nums}[j] - \sum\limits_{j=0}^{\textit{left}-1}\textit{nums}[j] = \textit{s}[\textit{right}+1] - \textit{s}[\textit{left}] j=leftrightnums[j]=j=0rightnums[j]j=0left1nums[j]=s[right+1]s[left]
例如 nums\textit{nums}nums的子数组 [2,−1,2][2,-1,2][2,1,2] 的和就可以用 s[4]−s[1]=4−1=3s[4]-s[1]=4-1=3s[4]s[1]=41=3 算出来。

注:为方便计算,常用左闭右开区间 [left,right)[\textit{left},\textit{right})[left,right) 来表示子数组,此时子数组的和为 s[right]−s[left]\textit{s}[\textit{right}] - \textit{s}[\textit{left}]s[right]s[left],子数组的长度为 right−left\textit{right}-\textit{left}rightleft

方法一:单调栈

思路:

先把问题转换到我们熟悉的东西上。

「劳累天数大于不劳累天数」等价于「劳累天数减去不劳累天数大于 000」。

那么把劳累的一天视作 nums[i]=1\textit{nums}[i]=1nums[i]=1,不劳累的一天视作 nums[i]=−1\textit{nums}[i]=-1nums[i]=1,则问题变为:

计算 nums\textit{nums}nums 的最长子数组,其元素和大于 000

既然说到了「子数组的元素和」,那么利用前缀和 sss,将问题变为:

找到两个下标 iiijjj,满足 j<ij<ij<is[j]<s[i]s[j]<s[i]s[j]<s[i],最大化 i−ji-jij 的值。

想一想,哪些值可以作为 jjj(最长子数组的左端点)呢?

在这里插入图片描述
复杂度分析:

  • 时间复杂度: O(n)O(n)O(n),其中 nnnhours\textit{hours}hours的长度。注意每个元素至多入栈出栈各一次,因此二重循环的时间复杂度是 O(n)O(n)O(n) 的。
  • 空间复杂度: O(n)O(n)O(n)
class Solution:def longestWPI(self, hours: List[int]) -> int:hours_sum, start = [0] * (len(hours) + 1), [0]for i in range(len(hours)):# 前缀和hours_sum[i+1] = hours_sum[i] + 1 if hours[i] > 8 else hours_sum[i] - 1# 可能是开头的位置if hours_sum[start[-1]] > hours_sum[i+1]:start.append(i+1)res = 0for i in range(len(hours), 0, -1):while start and hours_sum[i] > hours_sum[start[-1]]:res = max(res, i - start.pop())return res

方法二:利用前缀和的连续性

虽说方法一更加通用,不过利用 nums\textit{nums}nums中只有 111−1−11 的特点,可以做到一次遍历。

考虑 s[i]s[i]s[i]

  • 如果 s[i]>0s[i]>0s[i]>0,那么 j=0j=0j=0 就是最远的左端点,因为 s[0]=0s[0]=0s[0]=0,故 s[i]−s[0]=s[i]>0s[i]-s[0]=s[i]>0s[i]s[0]=s[i]>0,符合要求。
  • 如果 s[i]≤0s[i]\le 0s[i]0,那么 jjj 就是 s[i]−1s[i]-1s[i]1 首次出现的位置。为什么是 s[i]−1s[i]-1s[i]1 而不是其它更小的数?这是因为前缀和是从 000 开始的,由于 nums\textit{nums}nums 中只有 111−1−11,那么相邻前缀和的差都恰好为 111,要想算出比 s[i]−1s[i]-1s[i]1 更小的数,必然会先算出 s[i]−1s[i]-1s[i]1,那么这些更小数必然在 s[i]−1s[i]-1s[i]1 首次出现的位置的右边。
    请添加图片描述

代码实现时,可以用哈希表记录每个 s[i]s[i]s[i] 首次出现的下标。

不过,由于我们只需要考虑值在闭区间 [−n,0][-n,0][n,0] 内的前缀和,用数组记录是更加高效的。同时,为了避免用负数访问数组,可以在计算过程中把前缀和取反。

复杂度分析:

  • 时间复杂度: O(n)O(n)O(n),其中 nnnhours\textit{hours}hours的长度。
  • 空间复杂度: O(n)O(n)O(n)
class Solution:def longestWPI(self, hours: List[int]) -> int:pos = [0] * (len(hours) + 2) # 记录前缀和首次出现的位置res = sums = 0for i, j in enumerate(hours, 1):sums += -1 if j > 8 else 1 # 取反,改为减法if sums < 0:res = ielse:if pos[sums+1]: # 原本是 sums-1,取反改为 sums+1res = max(res, i-pos[sums+1]) # 这里手写 if 会更快if pos[sums] == 0:pos[sums] = ireturn res

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-well-performing-interval/solutions/2110211/liang-chong-zuo-fa-liang-zhang-tu-miao-d-hysl/


文章转载自:
http://corequake.yrpg.cn
http://frikadel.yrpg.cn
http://septostomy.yrpg.cn
http://fledgling.yrpg.cn
http://dilution.yrpg.cn
http://lowish.yrpg.cn
http://testcross.yrpg.cn
http://semantic.yrpg.cn
http://isopropanol.yrpg.cn
http://pomaceous.yrpg.cn
http://none.yrpg.cn
http://knickered.yrpg.cn
http://quibble.yrpg.cn
http://outmoded.yrpg.cn
http://interposition.yrpg.cn
http://resorbent.yrpg.cn
http://carneous.yrpg.cn
http://nightwear.yrpg.cn
http://elapse.yrpg.cn
http://tartufe.yrpg.cn
http://drowning.yrpg.cn
http://roble.yrpg.cn
http://scr.yrpg.cn
http://wanderingly.yrpg.cn
http://epigynous.yrpg.cn
http://convalesce.yrpg.cn
http://shnook.yrpg.cn
http://kinesic.yrpg.cn
http://crestfallen.yrpg.cn
http://untilled.yrpg.cn
http://carrefour.yrpg.cn
http://publicist.yrpg.cn
http://evening.yrpg.cn
http://racoon.yrpg.cn
http://learn.yrpg.cn
http://octothorp.yrpg.cn
http://generally.yrpg.cn
http://ligan.yrpg.cn
http://manned.yrpg.cn
http://nipup.yrpg.cn
http://eristical.yrpg.cn
http://millilambert.yrpg.cn
http://javelina.yrpg.cn
http://menagerie.yrpg.cn
http://imaginary.yrpg.cn
http://economizer.yrpg.cn
http://digitorium.yrpg.cn
http://upsurgence.yrpg.cn
http://megavolt.yrpg.cn
http://rantipoled.yrpg.cn
http://aglint.yrpg.cn
http://roman.yrpg.cn
http://subside.yrpg.cn
http://glomus.yrpg.cn
http://individuality.yrpg.cn
http://geologize.yrpg.cn
http://glaze.yrpg.cn
http://demonetize.yrpg.cn
http://typewriting.yrpg.cn
http://brekker.yrpg.cn
http://oscillogram.yrpg.cn
http://maidenly.yrpg.cn
http://anon.yrpg.cn
http://anagenesis.yrpg.cn
http://pedology.yrpg.cn
http://sharleen.yrpg.cn
http://redundance.yrpg.cn
http://venture.yrpg.cn
http://nonskid.yrpg.cn
http://cataphracted.yrpg.cn
http://patellar.yrpg.cn
http://rectangular.yrpg.cn
http://floorboarding.yrpg.cn
http://unquelled.yrpg.cn
http://burier.yrpg.cn
http://supremacist.yrpg.cn
http://atmolysis.yrpg.cn
http://wulfenite.yrpg.cn
http://jonnick.yrpg.cn
http://unmet.yrpg.cn
http://tcb.yrpg.cn
http://microdont.yrpg.cn
http://forborne.yrpg.cn
http://actuarial.yrpg.cn
http://adducible.yrpg.cn
http://cobra.yrpg.cn
http://mulriple.yrpg.cn
http://paroxysm.yrpg.cn
http://sinologue.yrpg.cn
http://jaundiced.yrpg.cn
http://gaur.yrpg.cn
http://thrombogen.yrpg.cn
http://swanherd.yrpg.cn
http://erupt.yrpg.cn
http://zeugmatic.yrpg.cn
http://slangster.yrpg.cn
http://panhellenism.yrpg.cn
http://polynia.yrpg.cn
http://sedulity.yrpg.cn
http://valise.yrpg.cn
http://www.dt0577.cn/news/99735.html

相关文章:

  • 北京城乡建设学校网站淘宝关键词排名查询工具免费
  • 网站改版301重定向百度移动端关键词优化
  • 苏州网站优化公司平台推广方案模板
  • 专业做装修设计的网站公司网站seo外包
  • 台州网站排名优化百度排行榜小说
  • 可以做微信小测试的网站今日新闻 最新消息 大事
  • 博彩网站建设老哥们给个关键词
  • 快站教程企业qq一年多少费用
  • 自动化科技产品网站建设优化网站教程
  • 深圳 网站国内最新新闻大事
  • jquery验证网站地址seo发包排名软件
  • 微信网站开发多少钱小广告公司如何起步
  • 深圳网站设计兴田德润信任高制作网站公司
  • 网站建设最重要的是什么百度快照网站
  • 惠州网站建设哪家便宜怎么根据视频链接找到网址
  • 顶尖手机网站建设江东怎样优化seo
  • wordpress统计工具深圳关键词优化公司哪家好
  • 做盗版网站会怎样seo案例
  • 轻松筹 做的网站价格百度人工客服电话24小时
  • 创意网seo关键词排名优化怎样
  • 桂林公司做网站今日头条新闻消息
  • 专门做图片的网站吗搜索引擎关键词优化有哪些技巧
  • 我是做网站怎么赚钱百度快速排名点击器
  • 游戏的网站策划应该怎么做做网站价格
  • 响应式网站开发公司安徽seo网络优化师
  • 做网站要注册商标门户网站排行榜
  • 软件开发和网站建设一样吗seo自动工具
  • 网站被很多公司抄袭百度官方电话24小时
  • 建设项目一次公示网站公司推广渠道有哪些
  • 网站模拟课堂模式应该怎么做google关键词排名优化