pub struct RmqMax<T: Default + Clone + Copy + SegmentTreeMin + SegmentTreeMax + Ord> { /* private fields */ }
Expand description
Range Maximum Query
Implementations§
Source§impl<T> RmqMax<T>
impl<T> RmqMax<T>
Sourcepub fn new(src: &[T]) -> Self
pub fn new(src: &[T]) -> Self
Build Segment Tree (RMQMax) from slice.
use librualg::segment_tree::{RmqMin, SegmentTreeMin, SegmentTreeMax, RmqMax};
use std::prelude::v1::*;
let arr = [1, 2, 3, 4, 5];
let tree = RmqMax::new(&arr);
Sourcepub fn query(&self, l: usize, r: usize) -> Option<T>
pub fn query(&self, l: usize, r: usize) -> Option<T>
Returns the maximum on the interval l to r
use librualg::segment_tree::{Rsq, RmqMax};
let arr = [1, 2, 3, 4, 5];
let tree = RmqMax::new(&arr);
assert_eq!(tree.query(0, 4).unwrap(), 5);
assert_eq!(tree.query(1, 4).unwrap(), 5);
assert_eq!(tree.query(4, 1).unwrap(), 5);
assert_eq!(tree.query(3, 1).unwrap(), 4);
assert_eq!(tree.query(3, 11), None);
Auto Trait Implementations§
impl<T> Freeze for RmqMax<T>
impl<T> RefUnwindSafe for RmqMax<T>where
T: RefUnwindSafe,
impl<T> Send for RmqMax<T>where
T: Send,
impl<T> Sync for RmqMax<T>where
T: Sync,
impl<T> Unpin for RmqMax<T>where
T: Unpin,
impl<T> UnwindSafe for RmqMax<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more