Re: [閒聊] 每日leetcode

作者: sustainer123 (caster)   2024-06-06 13:42:36
※ 引述《oin1104 (是oin的說)》之銘言:
: ※ 引述 《SecondRun (南爹摳打)》 之銘言:
: :  
: : 846. Hand of Straights
: :  
: : 給定一整數陣列和分組大小
: : 回傳可否把數字分組,每一組的數字要連續
: :  
: : Example 1:
: : Input: hand = [1,2,3,6,2,3,4,7,8], groupSize = 3
: : Output: true
: : Explanation: Alice's hand can be rearranged as [1,2,3],[2,3,4],[6,7,8]
: :  
: : Example 2:
: : Input: hand = [1,2,3,4,5], groupSize = 4
: : Output: false
: : Explanation: Alice's hand can not be rearranged into groups of 4.
: :
: 思路 :
: 反正一定是要每一個數字都用來排他的卡組
: 先看能不能整除
: 然後就把每個數字都塞進map
: 因為要有序
: 所以就每一次都拿最小的數字組成卡組
: 然後刪除他們
: 如果可以組成的話就 可以
: 不行就return false
: class Solution {
: public:
: bool isNStraightHand(vector<int>& hand, int groupSize)
: {
: int len = hand.size();
: if(len%groupSize != 0)return false;
: map<int,int> paper;
: for(int k : hand)
: {
: paper[k]++;
: }
: while(!paper.empty())
: {
: vector<int> now;
: for(auto it = paper.begin() ; it != paper.end() ; it ++)
: {
: now.push_back(it->first);
: it->second
作者: oin1104 (是oin的說)   2024-06-06 13:44:00
c++ 的map會幫你在插入的時候排序 原理不知道 反正很方便
作者: sustainer123 (caster)   2024-06-06 13:46:00
我感覺能想辦法省下來 因為我才16%省下這個就變O(N) 多排序就nlogn
作者: oin1104 (是oin的說)   2024-06-06 13:48:00
可是要讓他有序的話 就一定要排 所以這個方法大概就這樣惹 nlogn我跟你都是nlogn 八
作者: sustainer123 (caster)   2024-06-06 13:52:00
你n吧 那兩個迴圈都實質N假如我沒理解錯誤的話 我C++很糞
作者: oin1104 (是oin的說)   2024-06-06 13:54:00
沒八 我插入map的時候會是logn 插入n個所以是nlogn
作者: sustainer123 (caster)   2024-06-06 13:55:00
啊 對欸 忘了插入本身就要成本不對 哈希表插入元素的時間複雜度不是1?
作者: oin1104 (是oin的說)   2024-06-06 13:57:00
好想插入靈夢 我插入靈夢都不需要成本 隨便插的不是 map是紅黑樹做的 unordered map 比較像是哈希 因為它無序map有序 插入的時候排的 然後原理是紅黑書
作者: sustainer123 (caster)   2024-06-06 14:01:00
喔喔 原來
作者: yam276 ('_')   2024-06-06 14:22:00
你效率要用unordered_map

Links booklink

Contact Us: admin [ a t ] ucptt.com