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;
    }
}
相关推荐
小叶学C++3 分钟前
【C++】类与对象(下)
java·开发语言·c++
2401_854391086 分钟前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端
Cikiss15 分钟前
微服务实战——SpringCache 整合 Redis
java·redis·后端·微服务
wxin_VXbishe16 分钟前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
Cikiss17 分钟前
微服务实战——平台属性
java·数据库·后端·微服务
无敌の星仔25 分钟前
一个月学会Java 第2天 认识类与对象
java·开发语言
OEC小胖胖30 分钟前
Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)
java·spring boot·后端·spring·mybatis·web
2401_857617621 小时前
SpringBoot校园资料平台:开发与部署指南
java·spring boot·后端
quokka561 小时前
Springboot 整合 logback 日志框架
java·spring boot·logback
计算机学姐1 小时前
基于SpringBoot+Vue的在线投票系统
java·vue.js·spring boot·后端·学习·intellij-idea·mybatis