您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页2276统计区间的整数数目

2276统计区间的整数数目

来源:爱问旅游网

1. 题目:统计区间中的整数数目

给你区间的 集,请你设计并实现满足要求的数据结构:

  • **新增:**添加一个区间到这个区间集合中。
  • **统计:**计算出现在 至少一个 区间中的整数个数。

2. 自身解法

很暴力,遍历每一个数组,用set接收,返回set的大小,最后显示空间不足

3. 官方解法

  • 用到了TreeMap,之前没用过,查了一下,主要是为了使用这个方法: Map.Entry<K,V> floorEntry(K key) 方法,返回值:小于或等于key的条目,如果没有这样的键,则返回 null

  • 其次,对于解法中while循环的理解(我最开始认为if就可以满足要求,不需要while),但是会有这种情况

4. 知识点解析

4.1. TreeMap

TreeMap是一个能比较元素大小的Map集合,底层是红黑树结构,会对传入的key进行了大小排序。其中,可以使用元素的自然顺序(也是相当于实现了Comparator),也可以使用集合中自定义的比较器来进行排序

TreeMap具有如下特点:

  • 不允许出现重复的key
  • 可以插入null键,null值;
  • 可以对元素进行排序;
  • 插入和遍历顺序不一致;

常用的方法:

4.2 二叉搜索树

4.3 平衡二叉搜索树 AVL树(因发明人得名)

4.4 红黑树

4.4.1 含义

红黑树,本质上依旧一颗二叉查找树,它满足了二叉查找树的特点,即左子树任意节点的值永远小于右子树任意节点的值。

AVL树用左右子树的高度差来保持着树的平衡。红黑树,用的是节点的颜色来维持树的平衡。

4.4.2 要求

一颗红黑树必须满足一下几点要求:

科普:NIL节点是就是一个假想的或是无实在意义的节点,所有应该指向NULL的指针,都看成指向了NIL节点,包括叶节点的子节点指针或是根节点的父指针(均是指向null的)

红黑树节点的结构:包含以下几个属性

4.4.3 红黑树节点添加

在将一个节点插入到红黑树中,首选需要将红黑树当做一颗二叉树查找树来对待,将节点进行插入。然后,为新插入的节点进行着色;最后,通过旋转和重新着色的方式来修正树的平衡,使其成为一颗红黑树;

(1)对于红黑树来说,其底层依旧是一颗二叉查找树。当我们插入新的元素时,它依旧会对该元素进行排序比较,将其送入到左子树或者是右子树中。

(2)在将新节点安置好以后,在对其进行着色处理,必须着成红色

为什么要着成红色,而不是黑色呢?——当将新增节点着成红色后,我们违背以上红黑树的要求的条数最少,恢复平衡起来最省事

后,在对其进行着色处理,必须着成红色

为什么要着成红色,而不是黑色呢?——当将新增节点着成红色后,我们违背以上红黑树的要求的条数最少,恢复平衡起来最省事

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务