1. 程式人生 > 其它 >力扣top100-49.字母異位詞分組-小基數的元集合使用輔助陣列降低時間複雜度

力扣top100-49.字母異位詞分組-小基數的元集合使用輔助陣列降低時間複雜度

背景

最開始刷題的時候,總想著寫一個大的輔助陣列,用來對每一個元素進行計數,但是考慮到元素空間,肯定是不可行的
但是,對於一些有限個元的元素,比如short型,char型,Byte型,這些型別的元素空間都有限,因此就可以考慮使用一個輔助陣列來計數

具體問題1:

在看sort原始碼時,以為底層就是使用的快排,但是實際上,會根據待排陣列的元素型別,個數,整體情況選擇不同的排序演算法
比如,對於char short Byte型別的陣列,且元素個數過多的情況,會使用計數排序
具體原理就是弄一個能包含所有元素空間的輔助陣列然後遍歷一遍待排陣列,輔助陣列做計數++操作
在遍歷一遍輔助陣列,0跳過,非0列印計數次

具體問題2:

連結:https://leetcode-cn.com/problems/group-anagrams
49. 字母異位詞分組
給你一個字串陣列,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。
字母異位詞 是由重新排列源單詞的字母得到的一個新單詞,所有源單詞中的字母通常恰好只用一次。
示例 1:
輸入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
輸出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
輸入: strs = [""]
輸出: [[""]]
示例 3:
輸入: strs = ["a"]
輸出: [["a"]]

方法1

字串轉陣列,再排序,然後就能得到所有的同源詞根,然後以這個根字串作為key,同源異位詞list作為value,存到hashmap裡面
最後做返回輸出

方法2

後面完全相同,但是排序使用了計數排序