特产网站怎么做,网站域名虚拟主机,服装网站设计理念,婚庆公司一条龙价目表牛客网: BM45
题目: 数组num, 窗口大小size, 所有窗口内的最大值
思路: 用队列作为窗口#xff0c;窗口内存储数组坐标#xff0c;left window[0], right从数组0开始遍历完数组#xff0c;每次新增元素时#xff0c;(1)先对窗口大小进行收缩到size大小范围#xff0c;即…牛客网: BM45
题目: 数组num, 窗口大小size, 所有窗口内的最大值
思路: 用队列作为窗口窗口内存储数组坐标left window[0], right从数组0开始遍历完数组每次新增元素时(1)先对窗口大小进行收缩到size大小范围即right-left0时left右移即window弹出window[0]直到符合size范围(2)对window从右侧开始所有比right坐标小的元素全部弹出window最后将right处元素入队此时以right为右端的窗口内的最大值即为num[window[0]]以此规律处理完num的所有元素。
注意: window进行收缩时要注意len(window)0
代码:
// gopackage main
// import fmt/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param num int整型一维数组 * param size int整型 * return int整型一维数组
*/
func maxInWindows( num []int , size int ) []int {// write code hereif len(num) size || size 0 || len(num) 0 {return []int{}}res : []int{}window : []int{}for i : 0; i size; i {for len(window) 0 num[window[len(window)-1]] num[i] {window window[:len(window)-1]}window append(window, i)}res append(res, num[window[0]])for i : size; i len(num); i {for len(window)0 i - window[0] size {window window[1:]}for len(window) 0 num[window[len(window)-1]] num[i] {window window[:len(window)-1]}window append(window, i)res append(res, num[window[0]])}return res
}