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]

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]

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);

pub fn update(&mut self, idx: usize, value: T)[src]

Update value by index

 use librualg::segment_tree::{RmqMin};
 let arr = [1, 2, 3, 4, 5];
 let mut tree = RmqMin::new(&arr);

 assert_eq!(tree.query(0, 4).unwrap(), 1);
 tree.update(0, 7);
 assert_eq!(tree.query(0, 4).unwrap(), 2);

Auto Trait Implementations

impl<T> RefUnwindSafe for RmqMin<T> where
    T: RefUnwindSafe

impl<T> Send for RmqMin<T> where
    T: Send

impl<T> Sync for RmqMin<T> where
    T: Sync

impl<T> Unpin for RmqMin<T> where
    T: Unpin

impl<T> UnwindSafe for RmqMin<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.