首页 > 编程语言 >算法-查找滑动窗口中的最大值-Go(滑动窗口)

算法-查找滑动窗口中的最大值-Go(滑动窗口)

时间:2025-01-12 22:34:01浏览次数:1  
标签:窗口 int max num Go 滑动 size

题目

给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。

例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。

窗口大于数组长度或窗口长度为0的时候,返回空。

代码

package main

// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param num int整型一维数组
 * @param size int整型
 * @return int整型一维数组
 */
func maxInWindows(num []int, size int) []int {
	// write code here
	// 如果数组长度小与窗口大小,或者 如果数组为空,返回空
	result := make([]int, 0)
	if len(num) < size || len(num) == 0 || size == 0{
		return result
	}
	// 循环
	count := len(num)
	for i := 0; i < count; i++ {
		// 循环次数达到最后一个窗口后,退出循环
		if i+size-1 > count-1 {
			break
		}
		// 窗口切片
		curentWindowSlice := num[i : i+size]
        // fmt.Println(curentWindowSlice)
		max := getMax(curentWindowSlice)
		result = append(result, max)
	}

	return result
}

// 获取切片的最大值,冒泡
func getMax(intSlice []int) int {
	max := 0
	if len(intSlice) == 0 {
		return max
	}

	for _, v := range intSlice {
        if v >= max {
            max = v
        }
    }
    return max
}

题目来源:牛客(记录一下,如果侵权,评论后删除)

标签:窗口,int,max,num,Go,滑动,size
From: https://www.cnblogs.com/alisleepy/p/18667495

相关文章

  • 读书记录--GO语言高级编程
    20240220问题记录如果某个包被多次导入的话,在执行的时候只会导入一次。当一个包被导入时,如果它还导入了其它的包,则先将其它的包包含进来,然后创建和初始化这个包的常量和变量,再调用包里的init函数,如果一个包有多个init函数的话,调用顺序未定义(实现可能是以文件名的顺序调用),同......
  • 基于django中医药数据可视化平台(源码+lw+部署文档+讲解),源码可白嫖!
    摘要时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,中医药管理平台当然不能排除在外。中医药数据可视化平台是在实际应用和软件工程的开发原理之上,运用Python语言、ECharts技术、爬虫技术以及Django框架进行开发,可以让用户实现在线......
  • 基于Django自然灾害频发地区情况数据分析系统
    一、前言......
  • VS Code+Gitee+Picgo实现图床
    在VSCode中结合Gitee图床和PicGo插件,解决Markdown文档插入图片的问题。步骤一、在VSCode中安装Picgo插件步骤二、在系统中安装Picgo软件进入PicGo官网:https://molunerfinn.com/PicGo/。下载最新版本.exe文件。安装完成后,打开PicGo,点击插件设置,搜索gitee,安装gitee-uploader......
  • AT_abc388_f Dangerous Sugoroku 题解
    太幽默了。显然可以用矩阵快速幂解决,矩阵里维护距离当前点\(B\)以内的所有点可不可达,转移只需分段,在区间内和不在区间内用不同的转移矩阵即可。复杂度\(O(B^3m\logn)\)。然后你就T了。此时你很急,你现在应该快点卡常来AK这场比赛而不是研究其他的做法,于是我们发现快速幂......
  • 实现windows下简单的自动化窗口管理
    转载或者引用本文内容请注明来源及原作者一、问题描述用户的应用场景非常简单:一个无主播的线上弹幕游戏,需要定时开启和关闭直播,直播平台是在Windows端的某播伴侣。二、分析需求首先需要定时任务管理。在特定的时间进行应用的管理,并且能够支持用户进行修改其次需要在对应......
  • Atcoder ABC388F Dangerous Sugoroku 题解 [ 蓝 ] [ 矩阵加速 ] [ 状压矩乘 ] [ 模拟
    DangerousSugoroku:赛时写了矩乘T飞了,受到sunkuangzheng大佬的启发才知道要状压矩乘。暴力矩乘思路直接像过河那样写模拟细节非常多,于是考虑像美食家一样的思路,利用矩阵分段加速。定义\(dp_i\)表示\(i\)能否到达,则有如下转移:\[dp_{i}=\bigvee_{j=i-B}^{i-A}dp_{j}\]......
  • matlab指令窗口功能
    指令窗口的基本功能   下面对指令窗口的七种功能各举一些简单的例子。1.1数值计算>>A=52,a=3                   %对A、a赋值,用逗号分割A=52a=3                                 %回车后显示结果,字母大小写有区......
  • 车道偏离预警(LDW)、车道保持辅助(LKA)、车道线检测-OpenCV、Python-滑动窗口、透视变
    车道偏离预警、车道保持辅助及车道线检测系统引言一、代码和文件1.项目文件说明2.项目的依赖包和环境3.运行代码二、整体代码逻辑1.相机校准2.车道检测/跟踪3.车道状态分析4.车道映射三、相机校准1.计算摄像机矩阵和失真系数四、图像和视频的处理步骤1.进行......
  • golang中 &和*的区别
    golang中&和*的区别&用于获取地址*用于声明时,就是声明指针类型,用于解引用时,就是解引用指针。&是取地址操作符,用于获取变量的内存地址。例如:packagemainimport"fmt"funcmain(){varnumint=10//获取num的地址并赋值给pp:=&num......