func maxSlidingWindow(nums []int, k int) []int {
n := len(nums)
prefixMax := make([]int, n)
suffixMax := make([]int, n)
for i, v := range nums {
if i%k == 0 {
prefixMax[i] = v
} else {
prefixMax[i] = max(prefixMax[i-1], v)
}
}
for i := n - 1; i >= 0; i-- {
if i == n-1 || (i+1)%k == 0 {
suffixMax[i] = nums[i]
} else {
suffixMax[i] = max(suffixMax[i+1], nums[i])
}
}
ans := make([]int, n-k+1)
for i := range ans {
ans[i] = max(suffixMax[i], prefixMax[i+k-1])
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
相关文章
- 前端开发之选择器
- YOLOv8白皮书-第Y8周:yolov8.yaml文件解读
- Golang | Leetcode Golang题解之第239题滑动窗口最大值-题解:
- 2024华为数通HCIP-datacom最新题库(变题更新⑥)
- LeetCode --- 2138. Divide a String Into Groups of Size k 解题报告
- 前端框架入门之Vue的模版语法与数据单向绑定 数据双向绑定
- CP AUTOSAR标准之CellularV2XDriver(AUTOSAR_SWS_CellularV2XDriver)(更新中……)
- iOS阶段学习第28天笔记(UIView的介绍)
- 有关ubuntu16.04进行sudo apt-get update更新时出现:‘。。。N: 无法安全地用该源进行更新,所以默认禁用该源。。。’等问题解决方案
- 学习笔记之TensorFlow