当前位置: 首页 > 面试题库 >

如何使用Binary Search从排序的TreeSet中检索元素?

夏兴平
2023-03-14
问题内容

我试图将多个排序列表合并到一个TreeSet中。然后,我考虑在该TreeSet上应用Binary Search算法,以O(log n)时间复杂度来检索元素。

下面是我的代码,在其中,我以一种方法传递列表列表,并将它们组合在一起TreeSet以避免重复…里面的所有列表inputs都经过排序-

private TreeSet<Integer> tree = new TreeSet<Integer>();

public void mergeMultipleLists(final List<List<Integer>> inputs) {
    tree = new TreeSet<Integer>();
    for (List<Integer> input : inputs) {
        for(Integer ii : input) {
            tree.add(ii);
        }
    }
}

public List<Integer> getItem(final Integer x) {
    // extract elements from TreeSet in O(log n)
}
  • 首先,这是将多个排序列表合并到TreeSet中的正确方法吗?是否有任何直接方法可以有效地合并TreeSet中的多个排序列表?
  • 其次,我将如何以O(log n)时间复杂度从TreeSet中提取元素?我想找到的元素xTreeSet,如果有,则返回它,如果它不存在则返回从下一个最大的价值TreeSet

还是与当前使用的数据结构相比,我可以使用其他数据结构更好?

更新的代码:

私有TreeSet树= new TreeSet();

public SearchItem(final List<List<Integer>> inputs) {
    tree = new TreeSet<Integer>();
    for (List<Integer> input : inputs) {
        tree.addAll(input);
    }
}

public Integer getItem(final Integer x) {
    if(tree.contains(x)) {
        return x;
    } else {
        // now how do I extract next largest 
         // element from it if x is not present
    }
}

问题答案:

TreeSetNavigableMapa
TreeMap专门支持。调用contains()TreeSet委托TreeMap.containsKey(),这是一个二进制搜索实现。

您可以使用来检查对象是否包含在集合中TreeSet.contains(),但是您必须首先拥有该对象。如果您希望能够查找和检索对象,则Map实现会更好。



 类似资料:
  • 我正在尝试将多个已排序的列表合并到一个树集中。。然后我考虑在树集上应用二进制搜索算法,以O(logn)的时间复杂度检索元素。。 下面是我的代码,我在其中一个方法中传递列表列表,并将它们组合成以避免重复...所有列表中的排序- 首先,这是将多个排序列表合并到树集的正确方法吗?有没有直接的方法可以有效地合并TreeSet中的多个排序列表 或者,与我目前使用的数据结构相比,我更适合使用另一种数据结构?

  • 问题内容: 希望有人知道此Java认证问题的答案: 哪两个结果可能?(选择两个。) A)7 0 B)7 1 C)7 3 D)-1 0 E)-1 1 F)-1 3 唯一的正确答案是E)-1 1,因为如果您执行二进制搜索算法,这是唯一可能的输出。但是他们要我选择两个…所以第二个必须是B)7 1然后,因为排序数组中的第二个binarySearch总是会返回。 所以我的问题是,为什么B)7 1是可能的结果

  • 问题内容: 我的清单包含大小等的集合。我尝试这样做,但似乎不起作用。 我想要的最终结果是。 我可以尝试添加在所有的元素和那种出来再做出新的的。但是,有某种班轮吗? 更新: 这可行,但是可以简化吗? 问题答案: @Eugene的回答很甜蜜,因为番石榴很甜。但是,如果您碰巧在类路径中没有番石榴,这是另一种方式: 首先,我将所有集合映射到一个流中,然后对所有元素进行排序,最后,将整个排序后的流收集到集合

  • 问题内容: 我是XML的新手。我想根据请求名称阅读以下XML。请帮助我了解如何以Java读取以下XML 问题答案: 如果你的XML是字符串,则可以执行以下操作: 如果你的XML在文件中,Document document则将被实例化为: 在document.getDocumentElement()返回你是文档的文档元素节点(你的情况 )。 一旦有了rootElement,就可以访问元素的属性(通过

  • 本文向大家介绍TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?相关面试题,主要包含被问及TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?时的应答技巧和注意事项,需要的朋友参考一下 考察点:Tree   TreeSet要求存放的对象所属的类必须实现Comparable接

  • 我正在尝试创建一个用户可以在浏览器中存储注释的应用程序。 为了弄清楚用户在文档中创建注释的位置,我正在尝试存储所选文本的xpath和偏移量。 我到处搜索过,似乎有很多从xPath字符串中检索元素的示例,但没有很好的从DOM元素中查找xPath的示例。 以下是我尝试过的: 其中getXPathForElement如下所示: 这段代码给出了一个很长的看起来很奇怪的文本,如下所示:(我认为这不是一个真正