Struct librualg::segment_tree::RmqMin [−][src]
pub struct RmqMin<T: Default + Clone + Copy + SegmentTreeMin + SegmentTreeMax + Ord> { /* fields omitted */ }
Expand description
Range Minimum Query
Implementations
impl<T> RmqMin<T> where
T: Default + Clone + Copy + SegmentTreeMin + SegmentTreeMax + Ord,
[src]
impl<T> RmqMin<T> where
T: Default + Clone + Copy + SegmentTreeMin + SegmentTreeMax + Ord,
[src]pub fn new(src: &[T]) -> Self
[src]
pub fn new(src: &[T]) -> Self
[src]Build Segment Tree (RMQMin) from slice.
use librualg::segment_tree::{RmqMin, SegmentTreeMin, SegmentTreeMax}; use std::prelude::v1::*; let arr = [1, 2, 3, 4, 5]; let tree = RmqMin::new(&arr);
pub fn query(&self, l: usize, r: usize) -> Option<T>
[src]
pub fn query(&self, l: usize, r: usize) -> Option<T>
[src]Returns the minimal on the interval l to r
use librualg::segment_tree::{Rsq, RmqMin}; let arr = [1, 2, 3, 4, 5]; let tree = RmqMin::new(&arr); assert_eq!(tree.query(0, 4).unwrap(), 1); assert_eq!(tree.query(1, 4).unwrap(), 2); assert_eq!(tree.query(4, 1).unwrap(), 2); assert_eq!(tree.query(3, 1).unwrap(), 2); assert_eq!(tree.query(3, 11), None);
Auto Trait Implementations
impl<T> RefUnwindSafe for RmqMin<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for RmqMin<T> where
T: Send,
T: Send,
impl<T> Sync for RmqMin<T> where
T: Sync,
T: Sync,
impl<T> Unpin for RmqMin<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for RmqMin<T> where
T: UnwindSafe,
T: UnwindSafe,