use std::cmp; impl Solution { pub fn find_min_arrow_shots(mut points: Vec>) -> i32 { points.sort_unstable_by_key(|p| p[0]); let mut used_arrows = 1; let mut max_x = points[0][1]; for point in points.iter().skip(1) { if point[0] <= max_x { max_x = cmp::min(max_x, point[1]); } else { used_arrows += 1; max_x = point[1]; } } used_arrows } }