问题描述:给定一组活动,每个活动有开始时间和结束时间,在这些活动中选择尽可能多的活动,使得它们互不重叠 贪心策略:每次选择结束时间最早且不与已选择的活动重叠的活动 实现代码 function activitySelection(activities) { // 按结束时间排序 activities.sort((a, b) => a[1] - b[1]); let selectedActivities = []; let lastEndTime = 0; for (let activity of activities) { if (activity[0] >= lastEndTime) { selectedActivities.push(activity); lastEndTime = activity[1]; } } return selectedActivities; } // 测试代码 const activities = [[1, 4], [3, 5], [0, 6], [5, 7], [3, 9], [5, 9], [6, 10], [8, 11], [8, 12], [2, 14], [12, 16]]; console.log(activitySelection(activities)); // 输出: [[1, 4], [5, 7], [8, 11], [12, 16]]