use std::mem::swap;
impl Solution { pub fn distance_between_bus_stops(distance: Vec<i32>, start: i32, destination: i32) -> i32 { let (mut val, n, mut ans) = (0, distance.len(), 0); let (mut s, mut d) = (start, destination); if s > d { swap(&mut s, &mut d); } for i in s..d { val += distance[i as usize]; } ans = val; val = 0; let mut i = d; while i != s { val += distance[i as usize]; i = (i + 1) % n as i32; } return std::cmp::min(val, ans); } }
|