golang刷leetcode技巧之如何实现数字流的秩
如何实现数字流的秩
1. 思路:
要实现数字流的秩,可以使用二叉搜索树的数据结构:每个节点存储一个值和该值在树中的秩(节点左子树节点个数 +1),左子树存储小于或等于该节点值的数,右子树存储大于该节点值的数。插入节点时,根据节点大小决定插入位置,并更新每个节点的秩。获取秩时,通过递归遍历树,根据节点值和目标值的大小关系,递归地定位到目标值所在的节点,并返回节点的秩。
2. 实现:
首先定义一个二叉树节点结构 TreeNode,包含值 Val、左子树 Left、右子树 Right 和秩 Rank。再定义一个数字流秩结构 StreamRank,包含根节点 Root。插入节点时,如果根节点为空,直接插入;否则调用私有方法 insertNode 进行递归插入节点。递归插入节点时,根据节点值和目标值的大小关系,更新节点的秩,并确定插入位置。获取秩时,调用私有方法 getRank 进行递归遍历树,直到找到目标值所在的节点或到达叶子节点为止,并返回节点的秩。
3. 示例:
首先创建一个 StreamRank 对象 sr。然后按顺序插入数字 5、1、4、4、5、9、7、13、3。最后分别获取数字流中小于或等于 1、3、4、9、13、100 的节点数量,输出结果为 0、1、3、6、9、9。
猜您想看
-
Python怎样爬取某平台短视频
如何使用Pyt...
2023年07月21日 -
Bytom孤块出现的原因以及相关操作介绍
原因介绍:拆分...
2023年07月23日 -
宝塔使用技巧:如何设置日志保存时间
SEO软...
2023年05月07日 -
怎么理解RabbitMQ在一线大厂中的基础组件架构设计思路
一、Rabbi...
2023年05月25日 -
油猴脚本编写技巧:使用模板字符串进行字符串拼接
使用模板字符串...
2023年05月13日 -
如何进行FFmpeg音视频格式转换
一、FFmpe...
2023年05月26日