首页 > 其他分享 >力扣 630课程表iii

力扣 630课程表iii

时间:2024-12-07 18:21:22浏览次数:3  
标签:630 int 力扣 courses 课程表 iii

 

原题链接

题解

反悔贪心,或者说是贪心+优先队列。

code

 

class Solution {
public:
    static bool cmp(vector<int > a,vector<int > b){
        if (a[1]!=b[1]) return a[1]<b[1];
        return a[0]<b[0];
    }
    int scheduleCourse(vector<vector<int>>& courses) {
        int cnt=courses.size();
        sort(courses.begin(),courses.end(),cmp);

        int ans=0,now=0;
        priority_queue<int > que;
        for (int i=0;i<cnt;i++){
            if (now+courses[i][0]<=courses[i][1]){
                now+=courses[i][0];
                que.push(courses[i][0]);
            }
            else if (!que.empty()){
                int x=que.top();
                if (courses[i][0]<=x){
                    que.pop();
                    now+=courses[i][0]-x;
                    que.push(courses[i][0]);
                }
            }
        }

        return que.size();
    }
};

 

标签:630,int,力扣,courses,课程表,iii
From: https://www.cnblogs.com/purple123/p/18592500

相关文章

  • 力扣每日打卡 92.反转链表II
    题目:给你单链表的头指针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。示例:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]提示:链表中节点数目为n1<=n<=500-500<=Node.......
  • 力扣61题 -- 旋转链表(C++)
    文章目录一、题目要求二、思路分析三、代码展示一、题目要求给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例1:输入:head=[1,2,3,4,5],k=2输出:[4,5,1,2,3]示例2:输入:head=[0,1,2],k=4输出:[2,0,1]二、思路分析以......
  • 力扣 179.最大数
    原题链接题解首先,第一感觉是直接按照字符串本身大小排序再相连;但是通过样例二可知此方法错误。因此,我们重新思考,上面的排序方法错误的原因在于上述的排序满足s1<=s2,但是不满足s1+s2<=s2+s1(我们称之为加法的传递原则)。此时我们重新定义排序规则:当s1+s2<=s2+s1时就排序,否则保持......
  • 力扣 LeetCode 51. N皇后(Day14:回溯算法)
    解题思路:每次进入backtracking都表示进入下一行每个backtracking中处理当前行的各个列,看各列是否合法isValid中因为是一行一行向下遍历的,所以对应的当前行一定满足条件,没有放置过其他皇后,只需要看对应的列是否满足即可是否符合需要看左上45°和右上45°,之所以是往上看,......
  • 力扣103. 二叉树的锯齿形层次遍历
    链接:103.二叉树的锯齿形层序遍历-力扣(LeetCode)vector<vector<int>>vec;if(root==nullptr)returnvec;queue<TreeNode*>que;que.push(root);//true代表从左到右//false代表从右到左boolflag=true;while(!q......
  • 【力扣】3274. 检查棋盘方格颜色是否相同
    一、题目给你两个字符串coordinate1和coordinate2,代表8x8国际象棋棋盘上的两个方格的坐标。以下是棋盘格的参考图:如果这两个方格颜色相同,返回true,否则返回false。坐标总是表示有效的棋盘方格。坐标的格式总是先字母(表示列),再数字(表示行)。示例:输入:coordinate1......
  • 【力扣热题100】—— Day3.反转链表
    你不会永远顺遂,更不会一直年轻,你太安静了,是时候出发了                                                                                        —— 24.12.2206.反转链表......
  • 力扣15题——蓝桥杯每日一练(双指针+排序)
    #题目给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。#思路通过排序+双指针完成解题#......
  • 力扣刷题TOP101:10.BM12 单链表的排序
    目录:目的思路复杂度记忆秘诀python代码目的{1,3,2,4,5}排序变成{1,2,3,4,5}思路这个任务是将无序单链表变成有序表。推荐使用归并算法。可以理解为汉武帝的推恩令政策(分治思想)。将大块封地分成小块封地(分割链表),对小封地进行整顿,确保符合中央标准(分到最小),将整治......
  • 力扣面试题 28 - 配对交换
    题目:配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1:输入:num=2(或者0b10)输出1(或者0b01)示例2:输入:num=3输出:3提示:num的范围在[0,2^30-1]之间,不会发生整数溢出。思路:首先我们......