• leetcode 621. Task Scheduler


    https://www.cnblogs.com/grandyang/p/7098764.html

    将个数出现最多的那个字符作为分隔的标准,一定是最小的。所以这个时候只需要计算还需要添加多少个idel就能找到整个的个数。

    方法是:先计算个数最多的字符,并且判断有没有跟他个数相同的,如果这个字符出现的次数是3次,那其实只需要中间有2个部分进行填充。同时注意这种有重复个数的字符,这些个数重复的字符也只有n-1个在这2个部分。然后就算剩下的有多少字符,并且需要多少个字符,再根据这个进行补充。

    class Solution {
    public:
        int leastInterval(vector<char>& tasks, int n) {
            int length = tasks.size();
            vector<int> charecter(26,0);
            for(char task : tasks)
                charecter[task - 'A']++;
            int max_num = 0,max_number = 0;
            for(int i = 0;i < 26;i++){
                if(charecter[i] > max_num){
                    max_num = charecter[i];
                    max_number = 1;
                }
                else if(charecter[i] == max_num)
                    max_number++;
            }
            int blank = (n - max_number + 1) * (max_num - 1);
            int left = tasks.size() - max_num * max_number;
            int idle_num = blank > left ? blank - left : 0;
            return tasks.size() + idle_num;
        }
    };
  • 相关阅读:
    (转)extern用法详解
    (转)extern用法,全局变量与头文件
    关于将数字转换成中文表达程序
    不用对战平台玩魔兽
    结构体内存对齐问题(转)
    今天碰到的很奇怪的问题
    99乘法表
    自我检讨
    收支簿
    掠夺论
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10497335.html
Copyright © 2020-2023  润新知