私はこの質問が何度も尋ねられ、答えられたことを知っています。しかし、ほとんどすべてのソリューションの計算の複雑さはO(n ^ 2)です。
O(n log n)の複雑さを持つソリューションを探しています。誰か提案してもらえますか?
ヒープに感謝します、Chaitanya
私はこの質問が何度も尋ねられ、答えられたことを知っています。しかし、ほとんどすべてのソリューションの計算の複雑さはO(n ^ 2)です。
O(n log n)の複雑さを持つソリューションを探しています。誰か提案してもらえますか?
ヒープに感謝します、Chaitanya
エントリをにコピーし、値List
で並べ替えます。List
にコピーして戻しますLinkedHashMap
。大幅に優れた解決策は不可能だと思います。
List<Entry<K, V>> entries = new ArrayList<Entry<K, V>>(map.entrySet());
Collections.sort(entries, new Comparator<Entry<K, V>>() {
public int compare(Entry<K, V> left, Entry<K, V> right) {
return left.getValue().compareTo(right.getValue());
}
}
Map<K, V> sortedMap = new LinkedHashMap<K, V>(entries.size());
for (Entry<K, V> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}