|
| 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