mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2026-03-12 12:51:10 +00:00
添加Go语言题解
This commit is contained in:
@@ -260,3 +260,48 @@ class Solution {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Go Code:
|
||||
|
||||
```go
|
||||
func longestSubarray(nums []int, limit int) int {
|
||||
maxdeq := []int{} // 递减队列
|
||||
mindeq := []int{} // 递增队列
|
||||
|
||||
length := len(nums)
|
||||
left, right, maxwin := 0, 0, 0
|
||||
for right < length {
|
||||
for len(maxdeq) != 0 && maxdeq[len(maxdeq) - 1] < nums[right] {
|
||||
maxdeq = maxdeq[: len(maxdeq) - 1]
|
||||
}
|
||||
maxdeq = append(maxdeq, nums[right])
|
||||
|
||||
for len(mindeq) != 0 && mindeq[len(mindeq) - 1] > nums[right] {
|
||||
mindeq = mindeq[: len(mindeq) - 1]
|
||||
}
|
||||
mindeq = append(mindeq, nums[right])
|
||||
|
||||
for maxdeq[0] - mindeq[0] > limit {
|
||||
if maxdeq[0] == nums[left] {
|
||||
maxdeq = maxdeq[1:]
|
||||
}
|
||||
if mindeq[0] == nums[left] {
|
||||
mindeq = mindeq[1:]
|
||||
}
|
||||
left++
|
||||
}
|
||||
maxwin = max(maxwin, right - left + 1)
|
||||
right++
|
||||
}
|
||||
return maxwin
|
||||
}
|
||||
|
||||
func max(a, b int) int {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user