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;
    }
}
相关推荐
smj2302_796826526 小时前
解决leetcode第3943题递增后的数对数量
数据结构·python·算法·leetcode
炽烈小老头7 小时前
【每天学习一点算法 2026/05/25】矩阵中的最长递增路径
学习·算法·矩阵
叁散7 小时前
实验报告:5G 仿真环境与基本链路模拟
算法
从负无穷开始的三次元代码生活8 小时前
算法零碎灵感点分享
算法
染指11108 小时前
9.LangChain框架(实现RAG)
数据库·人工智能·算法·机器学习·ai·大模型
大数据三康8 小时前
在spyder进行的遗传算法练习
开发语言·python·算法
Gene_20228 小时前
轮式底盘的微分平坦
算法
吴佳浩9 小时前
现代多模态大模型的核心基础:Unified Self-Attention
人工智能·算法·llm
小小编程路10 小时前
C++ 常用逻辑运算符
开发语言·c++·算法
Hali_Botebie10 小时前
两种子词分词算法BPE (Byte-Pair Encoding) 和Unigram 区别
人工智能·算法