diff options
author | Haidong Ji | 2018-12-09 15:37:43 -0600 |
---|---|---|
committer | Haidong Ji | 2018-12-09 15:37:43 -0600 |
commit | 52108279a187ebce1de64b9fe12d3ed5415cb14c (patch) | |
tree | 75dc43d0c5d9669eadee900ea056b3d0840e8190 /AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java | |
parent | 8e42c78e2f389f8aabefef163f38a54d170018b5 (diff) |
Organizing lottery done!
Pretty challenging and fun exercise. Once again, persistence is the key.
Don't give up, and it is a lot of fun.
Diffstat (limited to 'AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java')
-rw-r--r-- | AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java | 108 |
1 files changed, 55 insertions, 53 deletions
diff --git a/AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java b/AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java index 8cad411..9bf1af5 100644 --- a/AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java +++ b/AlgoDesignAndTechniqueEdxJava/sources/CoveringSegments.java @@ -8,46 +8,47 @@ import java.util.Set; public class CoveringSegments { - public static class Segment implements Comparable<Segment> { - int start, end; - Segment(int start, int end){ - this.start = start; - this.end = end; - } + public static class Segment implements Comparable<Segment> { + int start, end; - public int compareTo(Segment that) { - if (this.start > that.start) - return 1; - if (this.start == that.start) { - if (this.end > that.end) - return 1; - else - if (this.end == that.end) { - return 0; - } - else - return -1; - } - return -1; - } - - @Override - public boolean equals(Object o) { - if (o==this) return true; - if (!(o instanceof Segment)) { - return false; - } - Segment s = (Segment) o; - return start==s.start && end == s.end; - } - - @Override - public int hashCode() { - return Objects.hash(start, end); - } + Segment(int start, int end) { + this.start = start; + this.end = end; + } + + public int compareTo(Segment that) { + if (this.start > that.start) + return 1; + if (this.start == that.start) { + if (this.end > that.end) + return 1; + else if (this.end == that.end) { + return 0; + } else + return -1; + } + return -1; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof Segment)) { + return false; + } + Segment s = (Segment) o; + return start == s.start && end == s.end; + } - } - public static void main(String[] args) { + @Override + public int hashCode() { + return Objects.hash(start, end); + } + + } + + public static void main(String[] args) { // Scanner scanner = new Scanner(System.in); // int n = scanner.nextInt(); // Set<Segment> segments = new HashSet<Segment>(); @@ -81,20 +82,21 @@ public class CoveringSegments { for (int point : points) { System.out.print(point + " "); } - } - public static int[] getOptimalPoints(Segment[] s) { - int index = 0; - List<Integer> points = new ArrayList<Integer>(); - while (index < s.length) { - points.add(s[index].end); - index = index + 1; - while (index < s.length && s[index].start <= points.get(points.size()-1).intValue()) { - if (s[index].end < points.get(points.size()-1).intValue()) - points.set(points.size()-1, s[index].end); - index = index + 1; - } - } - return points.stream().mapToInt(i -> i).toArray(); - } + } + + public static int[] getOptimalPoints(Segment[] s) { + int index = 0; + List<Integer> points = new ArrayList<Integer>(); + while (index < s.length) { + points.add(s[index].end); + index = index + 1; + while (index < s.length && s[index].start <= points.get(points.size() - 1).intValue()) { + if (s[index].end < points.get(points.size() - 1).intValue()) + points.set(points.size() - 1, s[index].end); + index = index + 1; + } + } + return points.stream().mapToInt(i -> i).toArray(); + } } |