解題思路:
static
class
mycomparator
implements
comparator
@override
public
intcompare
(string o1, string o2)
//o1//o1>o2返回》0
//o1==o2返回0
//count1-count2公升序排序
//count2-count1降序排序
//sort就是按照公升序來排序,小的在前,大的在後
//count1-count2就是定義了出現次數比較少的比較小
//count2-count1就是定義了出現次數比較大的比較小
return count2-count1;}}
public list
topkfrequent
(string[
] words,
int k)
//2.把剛才這裡的統計得到的字串內容放到arraylist中
//keyset相當於得到了乙個set,set中存放的就是所有的key
arraylist
arraylist=
newarraylist
(map.
keyset()
);//3.按照剛才字串出現次數,針對arraylist進行排序
//sort預設是按照元素的自身大小進行公升序排序(string的字典序)
//此處我們需要按照字串出現次數來降序排序
collections.
sort
(arraylist,
newmycomparator
(map));
return arraylist.
sublist(0
,k);
}
在上面的思路中除了在外部建立構造器,也可以在類的內部使用匿名內部類來完成比較
//另一種思路,匿名內部類
//不知道類名字是啥,但是知道這個類實現了comparator介面
//這個類只需要使用一次,使用完就丟了
collections.
sort
(list,
newcomparator
()return count2-count1;}}
);
前k個高頻單詞
題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞...
前K個高頻單詞
題目鏈結 public static listtopkfrequent string words,int k set set hashmap.entryset list list new arraylist set collections.sort list,new comparator int c...
python 前k個高頻單詞
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該是按單詞出現頻率有高到低排序。如果不同的單詞有相同出現頻率,按照字母順序排序。import numpy as np defresult 1 str list,k str list set np.sort list set str l...