Skip to content

Commit

Permalink
72: See solutions
Browse files Browse the repository at this point in the history
  • Loading branch information
sankichi92 committed Jan 1, 2024
1 parent d6e718f commit 95f2a53
Showing 1 changed file with 23 additions and 39 deletions.
62 changes: 23 additions & 39 deletions 72-non-overlapping-intervals/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,47 +1,17 @@
use std::collections::HashSet;
pub fn erase_overlap_intervals(mut intervals: Vec<Vec<i32>>) -> i32 {
intervals.sort_unstable_by_key(|interval| interval[1]);

pub fn erase_overlap_intervals(intervals: Vec<Vec<i32>>) -> i32 {
let intervals_len = intervals.len();
let unique_intervals: HashSet<_> = intervals.into_iter().collect();
let mut removed = 0;
let mut current_end = intervals[0][1];

let mut removed = (intervals_len - unique_intervals.len()) as i32;

let mut overlapped_counts = vec![0; unique_intervals.len()];
let mut overlapped_indices = vec![vec![]; unique_intervals.len()];

for (i, interval1) in unique_intervals.iter().enumerate() {
for (j, interval2) in unique_intervals.iter().enumerate().skip(i + 1) {
if (interval1[0] <= interval2[0] && interval2[0] < interval1[1])
|| (interval1[0] < interval2[1] && interval2[1] <= interval1[1])
{
overlapped_counts[i] += 1;
overlapped_counts[j] += 1;
overlapped_indices[i].push(j);
overlapped_indices[j].push(i);
}
for interval in intervals.iter().skip(1) {
if interval[0] < current_end {
removed += 1;
} else {
current_end = interval[1];
}
}

loop {
println!("{:?}", overlapped_counts);
let (max_idx, count) = overlapped_counts
.iter_mut()
.enumerate()
.max_by(|(_, cnt1), (_, cnt2)| cnt1.cmp(cnt2))
.unwrap();

if *count == 0 {
break;
}

*count = 0;
for idx in overlapped_indices[max_idx].iter() {
overlapped_counts[*idx] -= 1;
}

removed += 1
}

removed
}

Expand Down Expand Up @@ -93,4 +63,18 @@ mod tests {
4
);
}

#[test]
fn failed_case3() {
assert_eq!(
erase_overlap_intervals(vec![
vec![0, 2],
vec![1, 3],
vec![2, 4],
vec![3, 5],
vec![4, 6]
]),
2
);
}
}

0 comments on commit 95f2a53

Please sign in to comment.