【发布时间】:2018-10-06 09:06:25
【问题描述】:
我有一个任务要求我在一个数组中为所有数组条目找到所有较大元素中最小的一个,并将相应的索引存储在一个数组中,我无法完全弄清楚解决方案的最后一部分。
这有点类似于这里解释的问题: https://www.geeksforgeeks.org/smallest-greater-elements-in-whole-array/
唯一的区别是只计算数组条目右边的值(j>i),例如:
input: [80; 19; 49; 45; 65; 71; 76; 28; 68; 66]
output: [-1; 7; 4; 4; 9; 6; -1; 9; -1; -1]
自平衡树的解决方案对我来说很有意义。但是,我仍然需要考虑索引,因为只有数组条目的解决方案权才有效。
有没有办法将插入值的索引映射到树条目或创建具有相同结构但旧数组条目的索引而不是实际值作为节点的第二棵树?我不确定,因为自平衡树的结构当然取决于插入的值(较大的值右子树,较小的值左子树)。
编辑:实际上第二个 AVL 树可能无济于事,因为我必须在遍历树时检查索引是否更大并且数组条目更大...
【问题讨论】:
-
你必须使用树而不是数组吗?请提供您想要的示例输入和输出。你使用什么编程语言?
-
样本输入:[80; 19; 49; 45; 65; 71; 76; 28; 68; 66]样本输出:[-1; 7; 4; 4; 9; 6; -1; 9; -1; -1] -1 用于左侧没有更大元素的条目。编程语言将是 C++,因为有用于抽象数据类型的库,如堆栈或 AVL 树。我也可以使用数组。例如,对数组进行排序(这基本上是由 avl 树或任何其他类型的自平衡二叉搜索树完成的)并出于相同目的使用二叉搜索。
-
当然是右边
标签: c++ algorithm indexing data-structures tree