leetcode/src/problem/p1184_distance_between_bus_stops.rs
2024-10-24 09:08:13 +08:00

55 lines
1.3 KiB
Rust

/**
* [1184] Distance Between Bus Stops
*/
pub struct Solution {}
// submission codes start here
impl Solution {
pub fn distance_between_bus_stops(distance: Vec<i32>, start: i32, destination: i32) -> i32 {
let (start, destination) = (start as usize, destination as usize);
let n = distance.len();
let mut positive = start;
let mut positive_result = 0;
while positive != destination {
positive_result += distance[positive];
positive = (positive + 1) % n;
}
let mut negative = start;
let mut negative_result = 0;
while negative != destination {
negative = (negative + n - 1) % n;
negative_result += distance[negative]
}
positive_result.min(negative_result)
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_1184() {
assert_eq!(
1,
Solution::distance_between_bus_stops(vec![1, 2, 3, 4], 0, 1)
);
assert_eq!(
3,
Solution::distance_between_bus_stops(vec![1, 2, 3, 4], 0, 2)
);
assert_eq!(
4,
Solution::distance_between_bus_stops(vec![1, 2, 3, 4], 0, 3)
);
}
}