2023-09-11力扣每日一题

链接:

630. 课程表 III

题意

一个课程花费ai天,需要在bi天之前修好才算成功,求最多能修几个课

ddl越靠后的应该越晚做,所以先按照b排序(这还用问为什么吗?

然后通过维护一个优先队列存储目前已经修的课程,按照a排序,花费时间越多的越不划算

这是我们可以发现,越后面进来的课,ddl越晚,那么当这个后面来的课a大于队列内的数字时,不能修

当这个后面来的课a小于队列内的数字时,是更优解,替换队列内的最大数(由于用时短,ddl晚,则一定合法

实际代码:

c++ 复制代码
#include<bits/stdc++.h>
using namespace std;
static bool cmp(vector<int>& lhs,vector<int>& rhs)
{
	if(lhs[1]==rhs[1]) return lhs[0]<rhs[0];
	else return lhs[1]<rhs[1];
}
int scheduleCourse(vector<vector<int>>& courses)
{
	sort(courses.begin(),courses.end(),cmp);
	priority_queue<int>p_q;
	int sum=0;
	
	for(auto& course:courses)
	{
		int need=course[0],ddl=course[1];
		if(sum+need<=ddl)
		{
			sum+=need;
			p_q.push(need);
		}
		else if(!p_q.empty() && p_q.top()>need)
		{
			sum-=p_q.top()-need;
			p_q.pop();
			p_q.push(need);
		}
	}
	return p_q.size();
}

限制:

  • 1 <= courses.length <= 104
  • 1 <= durationi, lastDayi <= 104
相关推荐
咒法师无翅鱼25 分钟前
【leetcode详解】T598 区间加法
算法·leetcode·职场和发展
砂糖はいかがですか。40 分钟前
关于合并两个有序链表
数据结构·算法·链表
不会打代码呜呜呜呜1 小时前
小白零基础--CPP多线程
开发语言·c++·算法
辰尘_星启2 小时前
【单层神经网络】基于MXNet的线性回归实现(底层实现)
算法·线性回归·mxnet
kcwqxx2 小时前
day37|完全背包基础+leetcode 518.零钱兑换II ,377.组合总和II
c++·算法·leetcode·动态规划
程序趣谈2 小时前
算法随笔_36: 复写零
数据结构·python·算法
九亿AI算法优化工作室&2 小时前
GWO优化LSBooST回归预测matlab
人工智能·python·算法·机器学习·matlab·数据挖掘·回归
sjsjs114 小时前
【数据结构-字典树】力扣14. 最长公共前缀
数据结构·leetcode
python算法(魔法师版)4 小时前
基于机器学习鉴别中药材的方法
深度学习·线性代数·算法·机器学习·支持向量机·数据挖掘·动态规划
JNU freshman5 小时前
力扣第435场周赛讲解
算法·leetcode·蓝桥杯