我有一個存儲大量任務的系統。每個任務都有以下參數:在數據結構中查找最大值最大值和最大鍵值
Time t
Priority p
每個任務都有一個唯一的時間。這意味着沒有2個任務可以具有相同的時間參數。
但是,優先級不是唯一的。多個任務可以具有相同的優先級。
我需要設計一個系統,可以解決四種類型的查詢。每種查詢的概率是相同的。以下是該類型的查詢:
UpdateTask(T,P)
這個查詢希望系統在時間t
設置任務的優先級,以優先p
。如果任務在系統中不存在,則創建一個新任務。如果任務存在,其優先級會更新。DeleteTask(t)
此查詢希望系統刪除與時間t
關聯的任務。如果這樣的任務不存在於系統中,則不需要採取任何行動。GetMaximumPriority()和GetMinimumPriority()
此查詢希望系統打印系統中可用任務的最小優先級和最大優先級。GetPriorityofTaskAtMaximumTime()
這個查詢希望系統打印有我需要設計數據結構此係統參數t
(時間)
的最大值任務的優先級併爲這些數據結構實現算法。我需要在Java中實現這一點。
我的方法:創建一個HashMap
,其中鍵爲時間和值作爲優先級。 HashMap
允許我定時處理前兩個查詢。但最後兩個查詢的時間複雜度爲O(n)
。
問:是否有更好的時間和空間高效的數據結構和算法來解決這個問題?我主要需要一種方法來解決這個問題。完全實施的代碼是沒有必要的。謝謝。
爲什麼不試着自己想出一個結構,然後問這裏(如果你有問題)或在[codereview](如果你想要意見)?這看起來像你要麼需要學習一些東西(最好通過自己嘗試完成)或者它是你的工作(在這種情況下,你是爲了努力獲得金錢的,所以首先展示一下;))。 – Thomas
你的時間是什麼樣的?你可以在'Map
我認爲最難的查詢是Q4,您是否有關於此查詢的更多信息?它是否需要實時完成,還是可以緩存一些查詢並在批處理模式下處理它們?或者你知道時間的範圍嗎?如果您一次批量處理所有查詢,則可以在O(lg n)時間內完成,但如果您想要實時結果似乎並不容易 –