寫LeetCode演算法題時HashSet和HashMap的使用
阿新 • • 發佈:2021-09-22
1.HashSet
HashSet有一種很重要的特性,就是它的值不能重複。
這一點,通過物件名.contains(某種值)直接判斷,也可以用物件名.add(某種值)間接判斷,
add後如果返回false,則說明沒新增成功,即原集合中已有這種值。
2.HashMap
HashMap的鍵單獨提取出來,就是HashSet,它還是具有鍵不能重複的特性!後續存入的會覆蓋掉前面key同的元素。
但是!!!!
它能實現資料的重複儲存,當然,這個重複有點不同。
如果我們新建一個HashMap的物件,在存放資料前,先定義一個計數器count
int count = hashmap.getOrDefault(key,0); hashmap.put(key,count+1);
物件名.getOrDefault(key,0)這一方法,意思是說:
首先判斷集合中是否有某一鍵和值,如果有,則返回這一鍵對應的值,如果沒有,則返回預設的
值。我們這裡把預設值設為0,意思就明顯了。
剛開始,肯定啥也沒有,count接收0,然後元素存入集合,這存入的就是(鍵,該鍵的統計數),利用迴圈或遞迴重複
這一過程,就能統計出所有的資料。
3.總結
演算法題中經常出現要統計之前資料的情況,比如最長不重複子串,還有二叉樹中的相同子樹,要善用這兩種集合。