会议室占用时间段 od

原文链接 华为OD机试统一考试D卷C卷 - 会议室占用时间段(C++ Java JavaScript Python C语言)-CSDN博客

用例

4
1 4
2 5
7 9
14 18
[14 18, 7 9, 1 5]

4
1 4
1 4
2 4
1 9
[1 9]

解题思路

又是区间问题,排序是重点,按结束时间降序排队,然后遍历,看当前的结束时间是否在上一个时间区间内,确定是否是一个新的还是去合并

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int num =sc.nextInt();
			int[][] nums = new int[num][2];
			for(int i=0; i< num;i++) {
				nums[i][0] = sc.nextInt();
				nums[i][1] = sc.nextInt();
			}
			Arrays.sort(nums, (a,b) -> b[1] -a[1]);//按结束时间降序
			List<String> result = new ArrayList<String>();
			solution(nums, 1, result); //从第2个开始,第1个默认是开始的比较对象
			System.out.println(result);
		}
	}
	public static int solution(int[][] nums, int index, List<String> result){
		if(index == nums.length) {//全部处理完毕
			result.add(nums[index-1][0] +" "+ nums[index-1][1]);//这是最后一个
			return 0;
		}
		if(nums[index][1] < nums[index-1][0]) { //如果我的结束小于上一个的开始,则认为是一个新时间段
			result.add(nums[index-1][0] +" "+ nums[index-1][1]);
		}else {//每次都把区间合并的结果更新到当前索引,节省存储空间
			nums[index][0] = Math.min(nums[index-1][0], nums[index][0]);
			nums[index][1] = nums[index-1][1];
		}
		return solution(nums, index+1, result);
	}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
JavaScript 中判断当前时间是否在多个时间段内,可以先获取当前时间,然后使用条件语句进行判断。 首先,获取当前时间可以使用 JavaScript 的内置对象Date(),示例代码如下: let currentTime = new Date(); 接下来,我们可以定义多个时间段的起始时间和结束时间,以数组的形式存储。例如,我定义了两个时间段,分别是8:00-12:00和14:00-18:00,代码如下: let timeRanges = [ {start: '08:00', end: '12:00'}, {start: '14:00', end: '18:00'} ]; 然后,我们可以编写一个函数来判断当前时间是否在这些时间段内。函数中可以遍历时间段数组,每次比较当前时间是否在时间段的起始时间和结束时间之间。如果在任何一个时间段内,则返回true,否则返回false。示例代码如下: function isInTimeRanges(currentTime, timeRanges) { for(let i = 0; i < timeRanges.length; i++) { let start = new Date(currentTime.toDateString() + ' ' + timeRanges[i].start); let end = new Date(currentTime.toDateString() + ' ' + timeRanges[i].end); if(currentTime >= start && currentTime <= end) { return true; } } return false; } 最后,我们可以调用这个函数来判断当前时间是否在多个时间段内。示例代码如下: if(isInTimeRanges(currentTime, timeRanges)) { console.log('当前时间在指定时间段内'); } else { console.log('当前时间不在指定时间段内'); } 通过上述方法,我们可以判断当前时间是否在多个时间段内。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值