295. 数据流的中位数

二分法实现

    • [295. 数据流的中位数](#295. 数据流的中位数)

295. 数据流的中位数

  • 本题的第一个难点,要自己构造一个类(因为个人构造类的题目做的较少)
    属性: 数组的长度int 数组的数据结构 List
  • 保证原数组是一个有序数组,我使用了二分查找插入新元素。(类似于35.搜索插入位置)
    ① 当前数据结构没有元素时,直接插入数据结构尾部
    ② 当要插入的元素大于数据结构中最后一个元素时,直接插入数据结构的尾部。
    ③ 其他的元素按照二分查找的方法插入数据结构中,List 的 add(position, num)方法。
  • 没学会大小堆。。。。先用我的垃圾方法得了
java 复制代码
class MedianFinder {
    int size;
    List<Integer> lis;

    public MedianFinder() {
        size = 0;
        lis = new ArrayList<>();
    }

    // 要保持原数组的有序插入
    // 二分法查找插入
    public void addNum(int num) {
        int left = 0;
        int right = size-1;
        if(size == 0){
            lis.add(num);
            size++;
            return;
        }
        if( num > lis.get(right)){
            lis.add(num);
            size++;
            return;
        }  
        int middle = 0;
        while(left <= right){
            middle = left + (right - left)/2;
            if(lis.get(middle) > num){
                right = middle - 1;
            }
            else if(lis.get(middle) < num){
                left = middle + 1;
            }
            else{
                lis.add(middle, num);
                size++;
                return;
            }
        }
        lis.add(left, num);
        size++;
		// 用于打印测试
        // for(int tmp: lis){
        //     System.out.println(tmp);
        // }
        // System.out.println("*");
    }
    
    public double findMedian() {
        double median = 0.0;
        if(size % 2 == 1){
            median = lis.get(size/2);
        }
        else{
            median = (lis.get((size-1)/2)+lis.get(size/2))/2.0;
        }
        return median;
    }
}
相关推荐
苏-言几秒前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥8 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base21 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Allen Bright34 分钟前
maven概述
java·maven
编程重生之路36 分钟前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱37 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
努力进修1 小时前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
politeboy1 小时前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes
Daniel 大东2 小时前
BugJson因为json格式问题OOM怎么办
java·安全
Theodore_10226 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee