搜尋

首頁  >  問答  >  主體

c++ - n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法?

n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法和数据结构?

黄舟黄舟2767 天前754

全部回覆(5)我來回復

  • 高洛峰

    高洛峰2017-04-17 14:45:26

    樓上兩個答案的出發點不同。

    平衡二元樹可以做到,但是原始序列會被排序。
    在C++中,set 和 map 都可以滿足要求。

    而線段樹可以求區間最大值或最小值,不需要重新排序。
    沒有現成的資料結構可用,你可以自己寫個範本。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:45:26

    使用平衡二元樹

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:45:26

    你們怎麼用平衡二元樹呢,雖然可行;但如果只是最大最小值,那隻需要使用一個heap,在C++中有現成資料結構,是STL中的priority_queue

    回覆
    0
  • 迷茫

    迷茫2017-04-17 14:45:26

    線段樹可解 ...

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:45:26

    用C++ STL裡的set

    回覆
    0
  • 取消回覆