Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

239. 滑动窗口最大值 #95

Open
Labels
@Geekhyt

Description

@Geekhyt

原题链接

单调队列

1.维护一个单调递减队列,从大到小,左边是出口,右边是入口
2.每次 pop 时需要判断当前队列是否为空,并且如果当前要弹出的数值等于队列出口元素时,队列移除出口元素
3.每次 push 的元素如果大于入口元素,将队列后端的数值弹出,直到 push 的元素数值小于队列入口元素,保证单调性
4.max 可以获取当前队列的最大值

constmaxSlidingWindow=function(nums,k){constn=nums.lengthclassslideWindow{constructor(){this.data=[]}push(val){letdata=this.datawhile(data.length>0&&data[data.length-1]<val){data.pop()}data.push(val)}pop(val){letdata=this.dataif(data.length>0&&data[0]===val){data.shift()}}max(){returnthis.data[0]}}letres=[]letwindows=newslideWindow()for(leti=0;i<n;i++){if(i<k-1){windows.push(nums[i])}else{windows.push(nums[i])res.push(windows.max())windows.pop(nums[i-k+1])}}returnres}
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp