leetcode如何找出滑动窗口中位数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,小编给大家分享一下leetcode如何找出滑动窗口中位数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!中位数是有序序列最中间的那个数。如果序列的大小是偶数,则没有最中间的数;此时中位
千家信息网最后更新 2025年12月02日leetcode如何找出滑动窗口中位数
小编给大家分享一下leetcode如何找出滑动窗口中位数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
中位数是有序序列最中间的那个数。如果序列的大小是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。
例如:
[2,3,4],中位数是 3
[2,3],中位数是 (2 + 3) / 2 = 2.5
给出一个数组 nums,有一个大小为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数,每次窗口移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。
例如:
给出 nums = [1,3,-1,-3,5,3,6,7],以及 k = 3。
窗口位置 中位数
--------------- -----
[1 3 -1] -3 5 3 6 7 1
1 [3 -1 -3] 5 3 6 7 -1
1 3 [-1 -3 5] 3 6 7 -1
1 3 -1 [-3 5 3] 6 7 3
1 3 -1 -3 [5 3 6] 7 5
1 3 -1 -3 5 [3 6 7] 6
因此,返回该滑动窗口的中位数数组 [1,-1,-1,3,5,6]。
提示:
假设k是合法的,即:k 始终小于输入的非空数组的元素个数.
解题思路:
1,注意中位数是窗口内数据排序后的中位数
2,对于窗口内部可以采用插入排序的思想进行排序
3,初始时,采用插入排序,将前k个值,插入窗口
4,找到左指针对应元素在窗口内位置j
5,移动左右指针,将右指针对应元素替换窗口上一个左指针对应元素
6,剩下的就是排序的思路,向左移动或者向右移动,直到有序
func medianSlidingWindow(nums []int, k int) []float64 {var mid []float64win:=make([]int,k)for i:=0;iwin[i]=nums[i]for j:=i;j>0;j--{if win[j]win[j],win[j-1]=win[j-1],win[j]}else{break;}}}mid=append(mid,midd(win))for i:=k;i<=len(nums)-1;i++{win=window(win,nums[i],nums[i-k])mid=append(mid,midd(win))}return mid}func window(nums []int,val int,last int)[]int{j:=0for ;jif nums[j]==last{break;}}nums[j]=valfor i:=j;i>0;i--{if nums[i-1]>nums[i]{nums[i-1],nums[i]=nums[i],nums[i-1]}else{break}}for i:=j;iif nums[i]>nums[i+1]{nums[i],nums[i+1]=nums[i+1],nums[i]}else{break}}return nums}func midd(n []int)float64{fmt.Println(n)if len(n)%2!=0{return float64(n[len(n)/2])}return float64(n[len(n)/2]+n[len(n)/2-1])/2.0}
看完了这篇文章,相信你对"leetcode如何找出滑动窗口中位数"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
中位数
元素
移动
指针
数组
排序
有序
个数
位置
大小
序列
思路
篇文章
合法
两个
任务
偶数
完了
就是
平均数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
陕西电信信息网络安全
网络安全缺乏安全保障
戴尔科技是互联网企业吗
网络技术及应用清华大学出版
网络安全情景短剧剧本
国内服务器列表
网络安全周答题有奖励吗
redis计费服务器
九牛科技互联网
网络安全监测睡眠
金风科技风机软件开发
5g盒子软件开发
客户机 服务器系统
浙江商业软件开发代理价格
深圳市鼎盛网络技术有限公司电话
一对一的视频软件开发
软件开发有必要转管理岗位吗
服务器可以安装在显示器上吗
软件开发以后
东旦软件开发有限公司
软件开发方面的执业证
移动网络安全教学
过磅软件开发商
东城区先进软件开发排名
那个学校的数据库好
四川程序软件开发多少钱
神武金玉满堂服务器
pb数据库窗口打印预览
vb查询sql数据库为空
北京政英互联网科技