Skip to content

Commit 7aebf5f

Browse files
committed
Add ActivitySelection
1 parent 0d22709 commit 7aebf5f

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.packt.datastructuresandalg.lesson4.activityselection;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
public class ActivitySelection {
8+
static class Activity {
9+
public int id;
10+
public int start;
11+
public int finish;
12+
13+
public Activity(int i, int s, int f) {
14+
id = i;
15+
start = s;
16+
finish = f;
17+
}
18+
}
19+
20+
public List<Activity> select(List<Activity> activities) {
21+
List<Activity> selected = new ArrayList<>();
22+
List<Activity> sortedActivities = new ArrayList<>(activities);
23+
Collections.sort(sortedActivities, (o1, o2) -> o1.finish < o2.finish ? -1 : o1.finish > o2.finish ? 1 : 0);
24+
if (sortedActivities.size() > 0)
25+
selected.add(sortedActivities.get(0));
26+
for (int i = 1; i < sortedActivities.size(); i++)
27+
if (sortedActivities.get(i).start >= selected.get(selected.size() - 1).finish)
28+
selected.add(sortedActivities.get(i));
29+
return selected;
30+
}
31+
32+
public static void main(String[] args) {
33+
List<Activity> activities = new ArrayList<>();
34+
activities.add(new Activity(1, 600, 720));
35+
activities.add(new Activity(2, 1200, 1380));
36+
activities.add(new Activity(3, 1020, 1140));
37+
activities.add(new Activity(4, 600, 630));
38+
activities.add(new Activity(5, 1140, 1230));
39+
activities.add(new Activity(6, 1290, 1380));
40+
activities.add(new Activity(7, 750, 810));
41+
activities.add(new Activity(8, 1200, 1320));
42+
activities.add(new Activity(9, 1020, 1170));
43+
activities.add(new Activity(10, 960, 1140));
44+
activities.add(new Activity(11, 900, 1020));
45+
46+
ActivitySelection selection = new ActivitySelection();
47+
List<Activity> selected = selection.select(activities);
48+
for (int i = 0; i < selected.size(); i++) {
49+
System.out.print(selected.get(i).id);
50+
if (i + 1 < selected.size())
51+
System.out.print(", ");
52+
else
53+
System.out.print("\n");
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)