Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (愛麗絲)時間3年前 (2022/10/28 11:09), 編輯推噓2(209)
留言11則, 7人參與, 3年前最新討論串68/719 (看更多)
49. Group Anagrams 要把同樣字母組成的字串分在同一組 所以重點在要能知道兩個字串是否由相同字母組成 最簡單的方法是把兩個字串 sort 之後進行比較 所以可以寫一個 hash map 是 string ---> vector<string> key 就是 sort 過的字串 這樣複雜度會是 O(n klogk), k 是字串長度 雖然 k 上限只有 100 而已,但有個 log 卡在那邊就有點不爽 所以後來改成用 char arr[26] 來存各字母出現的次數 (因為 k <= 100 < 128 所以 char 放的下) 這樣複雜度可以到 O(nk) class Solution { public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string, vector<string>> M; for (string & s: strs) { char arr[26] = {}; for (char c: s) arr[c - 'a'] += 1; M[string(arr, arr + 26)].push_back(s); } vector<vector<string>> ans; for (auto & [_, v]: M) ans.push_back(move(v)); return ans; } }; Runtime : 19 ms (99.99%) Memory : 19.5 MB (87.72%) https://leetcode.com/submissions/detail/831781703/ 是說,LeetCode 的執行時間好像不是很穩定 我改個變數名稱,理論上要是一模一樣的程式再丟一次 時間就暴增到 54 ms,所以感覺那個百分比也看看就好 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.16.130 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1666926548.A.2AE.html

10/28 11:12, 3年前 , 1F
大師
10/28 11:12, 1F

10/28 11:12, 3年前 , 2F
看不懂 但是 大師
10/28 11:12, 2F

10/28 11:17, 3年前 , 3F
大師
10/28 11:17, 3F

10/28 14:40, 3年前 , 4F
大師
10/28 14:40, 4F

10/28 15:15, 3年前 , 5F
string(arr, arr + 26) 這裡在幹嘛阿?
10/28 15:15, 5F

10/28 15:32, 3年前 , 6F
不想自己寫hash, string有內建的hash可以用所以轉成長
10/28 15:32, 6F

10/28 15:32, 3年前 , 7F
度是16的string
10/28 15:32, 7F

10/28 15:33, 3年前 , 8F
*26
10/28 15:33, 8F

10/28 15:55, 3年前 , 9F
那感覺我們概念差不多 只是差在Hash的效率 字串拼接比較
10/28 15:55, 9F

10/28 15:56, 3年前 , 10F
費時
10/28 15:56, 10F

10/28 15:56, 3年前 , 11F
我原本用map去辨認輸入的string 沒想到可以用sort
10/28 15:56, 11F
文章代碼(AID): #1ZMqVKAk (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1ZMqVKAk (Marginalman)