将字母按照数量多少排序
AAAAA
BBB
CC
D
E
F
例如n=2
则一种可行的选择方案就是
ABCABCADEAF_A
class Solution {
public:
    int leastInterval(vector<char>& a, int n) {
        vector< int> v(26,0);
        for(char c:a){
            ++v[ c- 'A' ];
        }
        int cur = a.size();
        int ret = 0;
        while(cur > 0) {
            sort( v.begin(),v.end(),[&](int a,int b){
                return a > b;
            });
            
            for(int i=0;i<n+1;++i){
                if( cur > 0 ){
                    ++ ret;
                }
                if( i >= v.size() || v[i]==0 ){
                    ;
                }else{
                    --v[i];
                    --cur;
                }
            }
        }
        return ret;
    }
};
https://leetcode.cn/problems/task-scheduler/solution/by-60late-t4pw/
先用最多的数组拉开距离
 剩下的字母如果出现次数和最多的字母一样总长度就会多1
 否则剩下的元素填空就可以
 如果前面的空都填满了,这种时候就是所有字母的总长度
 因为剩下的字母一定可以找到一中插入的方案并且不会产生气泡
class Solution {
public:
    int leastInterval(vector<char>& a, int n) {
        vector<int> v(26,0);
        for(char c:a){
            ++v[ c- 'A' ];
        }
        sort(v.begin(),v.end(),greater<int>());
        
        int al = a.size();
        int ret = v[0] + n* (v[0]-1);
        for(int i=1;i<26;++i){
            if( v[i] == v[0] ){
                ++ret;
            }
        }
        return std::max<int>(al,ret);
    }
};
                










