Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreaGuarracino committed Dec 26, 2024
1 parent 7404058 commit 2f50d38
Showing 1 changed file with 0 additions and 43 deletions.
43 changes: 0 additions & 43 deletions src/impg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,49 +207,6 @@ impl SortedRanges {
}
self.ranges.truncate(write + 1);
}

pub fn insert_batch(&mut self, new_ranges: &mut Vec<(i32, i32)>) -> Vec<(i32, i32)> {
// Pre-sort new ranges in place
new_ranges.sort_unstable_by_key(|&(start, _)| start);

let mut non_overlapping = Vec::new();
let mut temp_ranges = Vec::new();

// Merge existing and new ranges in one pass
let mut i = 0; // index for self.ranges
let mut j = 0; // index for new_ranges

while i < self.ranges.len() && j < new_ranges.len() {
let (curr_start, curr_end) = self.ranges[i];
let (new_start, new_end) = if new_ranges[j].0 <= new_ranges[j].1 {
(new_ranges[j].0, new_ranges[j].1)
} else {
(new_ranges[j].1, new_ranges[j].0)
};

if new_start > curr_end {
temp_ranges.push(self.ranges[i]);
i += 1;
} else if curr_start > new_end {
non_overlapping.push(new_ranges[j]);
temp_ranges.push(new_ranges[j]);
j += 1;
} else {
temp_ranges.push((std::cmp::min(curr_start, new_start),
std::cmp::max(curr_end, new_end)));
i += 1;
j += 1;
}
}

// Add remaining ranges
temp_ranges.extend_from_slice(&self.ranges[i..]);
non_overlapping.extend_from_slice(&new_ranges[j..]);
temp_ranges.extend_from_slice(&new_ranges[j..]);

self.ranges = temp_ranges;
non_overlapping
}
}

#[derive(Clone)]
Expand Down

0 comments on commit 2f50d38

Please sign in to comment.