1. 程式人生 > 其它 >寫LeetCode演算法題時HashSet和HashMap的使用

寫LeetCode演算法題時HashSet和HashMap的使用

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.總結

演算法題中經常出現要統計之前資料的情況,比如最長不重複子串,還有二叉樹中的相同子樹,要善用這兩種集合。