leetcode-mid-others-621. Task Scheduler

mycode   53.01%

这个题在纸上画一画就知道啦,只要出现次数最多的字母能够满足要求,其他更少的字母穿插在其中,间隔就更满足<n啦,当然,最后不要忘记加上尾巴哦,尾巴和出现次数最多的字母的种类有关哦!

class Solution(object):
    def leastInterval(self, tasks, n):
        """
        :type tasks: List[str]
        :type n: int
        :rtype: int
        """
        from collections import Counter
        count = Counter(tasks)
        total = 1
        maxcount = count.most_common()[0][1]
        print(maxcount)
        for num,c in count.most_common()[1:]:
            if c == maxcount:
                total += 1
        return max(len(tasks),(maxcount-1)*(n+1)+total)

参考:

class Solution(object):
    def leastInterval(self, tasks, n):
        """
        :type tasks: List[str]
        :type n: int
        :rtype: int
        """
        lenT = len(tasks)
        res = rem = max_cnt = 0
        dic = collections.defaultdict(int)
       
        for ch in tasks:
            dic[ch]+=1
        for val in dic.values():
            if val>max_cnt:
                max_cnt = val
                rem = 0
            elif val==max_cnt:
                rem+=1 #与max_cnt出现频率相同的其他元素个数
        tmp = (max_cnt-1)*(n+1)+1 + rem # n很长的情况
        res = max(lenT, tmp)
        return res 
原文地址:https://www.cnblogs.com/rosyYY/p/10984617.html