2016-05-27 150 views
-2

我有一個包含許多項目的集合。這些項目有一些屬性,但讓我們假設其中2個在這種情況下是重要的; 可用優先。可用是一個簡單的布爾屬性,而優先級可以是1到100之間的任何數字。我需要實現的是找到n個順序的項目,其中所有項目都是可用的(== true)並且具有相同的優先級。 我並不僅限於使用集合,這意味着我可以創建額外的數據結構來加速查找過程(如顯示項目狀態的字節數組,例如:101010001)。在集合中查找具有相同屬性的項目

如果非要形象化有點:

1 [99],0 [80],1 [60],1 [60],0 [60]

1和0示出了可用性和括號中的數字顯示優先級。我需要找到第三和第四項。

實現這種算法的最快方法是什麼?

注意:這當然不是一個家庭作業問題。

編輯:我無法更改項目的順序,既不從集合中刪除某些項目。

+0

將所有可用任務存儲在單獨的集合中並根據優先級進行排序? –

+0

HashMap具有loopkup O(1)。不能說你可以比這更好。 – FallAndLearn

+0

'這是順序的 - 所以你不應該改變順序? – MBo

回答

0

只需使用HashMap即可將有效元素存儲爲true。 HashMap的鍵將成爲優先級,值將成爲它的出現次數。

最後打印出其中的那些關鍵字value > 1

因此,您可以在O(n)時間複雜度下完成此操作,其中n是元素的總數。

相關問題