480. 滑动窗口中位数

480. 滑动窗口中位数


Java:超出时间限制

java 复制代码
class Solution {
    double[] ans;
    int j;

    private void sortAndSetAns(int k, Map<Integer, Integer> map) {
        List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, (o1, o2) -> o1.getValue().compareTo(o2.getValue()));
        if (k % 2 == 1) {
            ans[j++] = list.get(k/2).getValue();
        } else {
            ans[j++] = list.get(k/2).getValue() / 2.0 + list.get(k/2 - 1).getValue() / 2.0;
        }
        list.clear();
    }

    public double[] medianSlidingWindow(int[] nums, int k) {
        ans = new double[nums.length - k + 1];
        j = 0;

        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < k; ++i) {
            map.put(i, nums[i]);
        }
        sortAndSetAns(k, map);

        for (int i = k; i < nums.length; ++i) {
            map.remove(i-k, map.get(i-k));
            map.put(i, nums[i]);
            sortAndSetAns(k, map);
        }

        return ans;
    }
}
相关推荐
YGGP8 小时前
【Golang】LeetCode 64. 最小路径和
算法·leetcode
古城小栈9 小时前
Rust变量设计核心:默认不可变与mut显式可变的深层逻辑
算法·rust
电商API&Tina9 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
LYFlied10 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
长安er11 小时前
LeetCode 20/155/394/739/84/42/单调栈核心原理与经典题型全解析
数据结构·算法·leetcode·动态规划·
MarkHD11 小时前
智能体在车联网中的应用:第28天 深度强化学习实战:从原理到实现——掌握近端策略优化(PPO)算法
算法
能源系统预测和优化研究11 小时前
【原创代码改进】考虑共享储能接入的工业园区多类型负荷需求响应经济运行研究
大数据·算法
yoke菜籽12 小时前
LeetCode——三指针
算法·leetcode·职场和发展
小高不明12 小时前
前缀和一维/二维-复习篇
开发语言·算法
bin915312 小时前
当AI优化搜索引擎算法:Go初级开发者的创意突围实战指南
人工智能·算法·搜索引擎·工具·ai工具