求一个数组的秩 Java实现
来源:互联网 发布:java 接口实例 编辑:程序博客网 时间:2024/05/20 23:33
问题:现在我们要读入一串数,同时要求在读入每个数的时候算出它的秩,即在当前数组中小于等于它的数的个数(不包括它自身),请设计一个高效的数据结构和算法来实现这个功能。 给定一个int数组A,同时给定它的大小n
分析:顺序读入一串数据,读入当前数求秩,秩存在于该数据之前的数据流中,这类似于构建一个二叉排序树过程,并在该过程中计算当前结点所在的位置。在构造二叉排序树的过程中,每个树节点保存其左子树的个数。
class TreeNode {TreeNode left;TreeNode right;int leftSize = 0;int val;TreeNode(int val) {this.val = val;}TreeNode() {}public void insert(int val) {if (this.val > val) {if (left != null) {left.insert(val);} else {left = new TreeNode(val);}leftSize++;} else {if (right != null) {right.insert(val);} else {right = new TreeNode(val);}}}public int getRank(int val) {if (this.val > val) {if (left != null) {return left.getRank(val);} else {return 0;}}else if(this.val<val){if(right!=null){return right.getRank(val)+leftSize+1;}else{return leftSize+1;}}else{return leftSize;}}}public class Rank {public static int[] getRankOfNumber(int[] A, int n) {int []b=new int[n];TreeNode tree=new TreeNode(A[0]);for(int i=1;i<n;i++){tree.insert(A[i]);b[i]=tree.getRank(A[i]);}return b;}
0 0
- 求一个数组的秩 Java实现
- java实现求二维数组的鞍点
- 用Java实现求一个数组中的出现次数最多的元素的个数
- java实现求一个数组中有多少个子序列
- Java—求一个数组的所有子数组
- Java实现:求子数组的最大和(数组)
- 分治方法实现求一个数组的逆序数
- Java 中一个int型数组的求最大值最小值
- 求一个数组的最大k个数(java)
- (旋转数组问题)给定一个整数类型的循环有序数组,求循环数组的特定值,使用二分查找法(JAVA实现)
- 求一个数组的长度
- 求一个数组的长度
- 求一个数组的最大公约数
- Java实现算法之--求子数组和的最大值
- Java实现算法之--求子数组和的最大值
- Java 螺旋数组的实现方式-一个循环实现哦
- 给定一个数组,根据数组名求数组的长度
- 求一个数组元素的所有排列组合
- 自己写的常用方法(Swfit版)
- mysql的gap锁导致Lock wait timeout exceeded try restarting transaction异常
- POJ 2353 DP
- Android学习第九天---Android数据存储
- JS简介
- 求一个数组的秩 Java实现
- C语言学习6
- Android UI(RadioButton)详解
- Permutations 全排列生成算法
- response.getWriter().write()产生乱码
- (八)、ZooKeeper 事物
- 坚持#第5天~深奥的知识
- 极客班 c++(下)第一周学习笔记 ——new & delete
- mouse的over/out和enter/leave