zoukankan      html  css  js  c++  java
  • [leetcode] 621. Task Scheduler(medium)

    原题

    思路:
    按频率最大的字母来分块,频率最大的字母个数-1为分成的块数,每一块个数为n+1
    比如AAABBCE,n=2, 则分为A…A… +A
    AAABBBCCEE,n=2,则分为AB…AB… +AB
    答案 = MAX(原数组长度,所有分块的长度和 + 频率最大的字母种数)
    仅当n=0时,答案是原数组长度。

    class Solution {
    public:
        int leastInterval(vector<char>& tasks, int n) {
            unordered_map<char,int> mp;
            int count = 0;
            for(auto e : tasks)
            {
                mp[e]++;
                count = max(count, mp[e]);
            }
            int ans = (count-1)*(n+1);
            for(auto e : mp) if(e.second == count) ans++;
            return max((int)tasks.size(), ans);
        }
    };
    
  • 相关阅读:
    day4
    day3
    day2
    day1
    spring-boot-note
    spring-boot-cli
    jquery ajax rest invoke
    spring-boot
    docker mysql
    jpa OneToMany
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/9893443.html
Copyright © 2011-2022 走看看