這里寫目錄標題
- 看前必知
- 🌟演算法題
- 🌟一點點思路
- 🌟原始碼和詳解
- 🌟面試題
- **特別介紹**
- 資料領取
看前必知
每日演算法和面試題系列出了有一段時間了,收到了不少肥友的支持,想要換作業或者找作業的肥友要多來光顧了計算機領域的技能在不斷的更新,你不學習就等于倒退,再不濟的話多知道點東西和同事朋友一起吹噓也能用上啊!哈哈哈,

🌟演算法題
給你一個字串陣列,請你將 字母異位詞 組合在一起,可以按任意順序回傳結果串列,
字母異位詞 是由重新排列源單詞的字母得到的一個新單詞,所有源單詞中的字母都恰好只用一次,
示例 1:
輸入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
輸入: strs = [""]
輸出: [[""]]
示例 3:
輸入: strs = ["a"]
輸出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 僅包含小寫字母
🌟一點點思路
我發現有時候不是題不會做,是題的意思我理解不了這道題你要是看懂字母異位詞是什么其實也不難嘛,這道題的主要意思就是把含有相同字母的單詞放在一個陣列里面,這些懂了吧,判斷是不是同一組的單詞也是挺簡單的比如:["eat", "tea", "tan", "ate", "nat", "bat"]可以把字母從小到大排序例如第一個為aet后面再找這個字母組合的單詞就可以了,下面我們使用散串列解題,
🌟原始碼和詳解
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//構建hashmap
Map<String, List<String>> map = new HashMap<String, List<String>>();
for (String str : strs) {
char[] array = str.toCharArray();
//將strs的單詞排序
Arrays.sort(array);
//構造這種單詞序列的key比如剛才的aet,后面若是出現這種情況就把他們歸為一組
String key = new String(array);
List<String> list = map.getOrDefault(key, new ArrayList<String>());
list.add(str);
map.put(key, list);
}
return new ArrayList<List<String>>(map.values());
}
}
🌟面試題
問:如何決定使用 HashMap 還是 TreeMap?
介紹
TreeMap<K,V>的Key值是要求實作java.lang.Comparable,所以迭代的時候TreeMap默認是按照Key值升序排序的;TreeMap的實作是基于紅黑樹結構,適用于按自然順序或自定義順序遍歷鍵(key),HashMap<K,V>的Key值實作散列hashCode(),分布是散列的、均勻的,不支持排序;資料結構主要是桶(陣列),鏈表或紅黑樹,適用于在Map中插入、洗掉和定位元素,
結論
如果你需要得到一個有序的結果時就應該使用TreeMap(因為HashMap中元素的排列順序是不固定的),除此之外,由于HashMap有更好的性能,所以大多不需要排序的時候我們會使用HashMap,
HashMap 和 TreeMap 的實作
HashMap:基于哈希表實作,使用HashMap要求添加的鍵類明確定義了hashCode()和equals()[可以重寫hashCode()和equals()],為了優化HashMap空間的使用,您可以調優初始容量和負載因子,
HashMap(): 構建一個空的哈希映像
HashMap(Map m): 構建一個哈希映像,并且添加映像m的所有映射
HashMap(int initialCapacity): 構建一個擁有特定容量的空的哈希映像
HashMap(int initialCapacity, float loadFactor): 構建一個擁有特定容量和加載因子的空的哈希映像
TreeMap:基于紅黑樹實作,TreeMap沒有調優選項,因為該樹總處于平衡狀態,
TreeMap():構建一個空的映像樹
TreeMap(Map m): 構建一個映像樹,并且添加映像m中所有元素
TreeMap(Comparator c): 構建一個映像樹,并且使用特定的比較器對關鍵字進行排序
TreeMap(SortedMap s): 構建一個映像樹,添加映像樹s中所有映射,并且使用與有序映像s相同的比較器排序
特別介紹
📣小白練手專欄,適合剛入手的新人歡迎訂閱編程小白進階
📣python有趣練手專案里面包括了像《機器人尬聊》《惡搞程式》這樣的有趣文章,可以讓你快樂學python練手專案專欄
📣另外想學JavaWeb進廠的同學可以看看這個專欄:傳送們
📣這是個面試和考研的演算法練習我們一起加油上岸之路
資料領取
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308904.html
標籤:其他
上一篇:?掌控web表單功能深入交流?
