leetcode621——优先队列的思路

Posted dtwd886

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode621——优先队列的思路相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/task-scheduler/

思路:数量多的先安排任务,少的后安排,每次仅仅采用每类任务个数减1的方式

class Solution 
public:
    struct node
    
        node():ch('.'),count(0)
        node(char c,int n):ch(c),count(n)
        

        
        bool friend operator<(node x,node y)
        
            if(x.count!=y.count)
                return x.count<y.count;
            else return x.ch<y.ch;
        
        char ch;
        int count;
    ;

    int leastInterval(vector<char>& tasks, int n) 
        unordered_map<char,int>mapp;
        priority_queue<node>pri_que;
        int result=0;
        for(auto ch:tasks)
        
            if(mapp.count(ch))
            
                mapp[ch]++;
            
            else
            
                mapp[ch]=1;
            
        
        for(auto pair_temp:mapp)
        
            pri_que.push(node(pair_temp.first,pair_temp.second));
        
        while(!pri_que.empty())
        
            vector<node>vec_temp;
            for(int i=0;i<n+1;i++)
            

                if(!pri_que.empty())
                
                    node lef_node=pri_que.top();
                    pri_que.pop();
                    lef_node.count-=1;
                    cout<<lef_node.ch<<" "<<lef_node.count<<endl;
                    if(lef_node.count!=0)
                    
                        vec_temp.push_back(lef_node);
                    
                
                result++;
                if(pri_que.empty()&&vec_temp.empty())break;
            
            for(auto temp_node:vec_temp)
            
                pri_que.push(temp_node);
            
        
        return result;
    
;

 

以上是关于leetcode621——优先队列的思路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 堆(优先级队列) 相关题目

Leetcode算法题

Leetcode算法题

LeetCode 1705 吃苹果的最大数目[贪心 优先队列] HERODING的LeetCode之路

leetcode621. 任务调度器

Leetcode23. 合并K个升序链表(优先队列)