class NgLib:: CompressedWaveletMatrix(T)

Included Modules

Defined in:

nglib/data_structure/wavelet_matrix.cr

Constructors

Instance Method Summary

Constructor Detail

def self. new (values : Array(T)) #

[ View source ]
def self. new (n : Int , & : Int32 -> T) #

[ View source ]

Instance Method Detail

def count (range : Range( Int | Nil, Int | Nil), bound : Range(T | Nil, T | Nil)) : Int32 #

range の表す区間に含まれる要素の中で bound が表す範囲の値の個数を返します。


[ View source ]
def count (range : Range( Int | Nil, Int | Nil), item : T) #

range の表す区間に含まれる要素の中で item の個数を返します。


[ View source ]
def count (item : T) #

item の個数を返します。

計算量は対数オーダーです。


[ View source ]
def kth_largest (range : Range( Int | Nil, Int | Nil), kth : Int ) #

range の表す区間に含まれる要素のうち、 kth 番目に大きい値を返します。

wm = WaveletMatrix.new([1, 3, 2, 5])
wm.kth_largest(1..2, 0) # => 3
wm.kth_largest(1..2, 1) # => 2

[ View source ]
def kth_largest (kth : Int32) #

kth 番目に大きい値を返します。

wm = WaveletMatrix.new([1, 3, 2, 5])
wm.kth_smallest(0) # => 5
wm.kth_smallest(1) # => 3
wm.kth_smallest(2) # => 2
wm.kth_smallest(3) # => 1

[ View source ]
def kth_smallest (range : Range( Int | Nil, Int | Nil), kth : Int ) #

range の表す区間に含まれる要素のうち、 kth 番目に小さい値を返します。

wm = WaveletMatrix.new([1, 3, 2, 5])
wm.kth_smallest(1..2, 0) # => 2
wm.kth_smallest(1..2, 1) # => 3

[ View source ]
def kth_smallest (kth : Int32) #

kth 番目に小さい値を返します。

wm = WaveletMatrix.new([1, 3, 2, 5])
wm.kth_smallest(0) # => 1
wm.kth_smallest(1) # => 2
wm.kth_smallest(2) # => 3
wm.kth_smallest(3) # => 5

[ View source ]
def next_value (range : Range( Int | Nil, Int | Nil), lower_bound) : T | Nil #

range の表す区間に含まれる要素のうち、 lower_bound 以上 の値の最小値を返します。

存在しない場合は nil を返します。


[ View source ]
def prev_value (range : Range( Int | Nil, Int | Nil), upper_bound) : T | Nil #

range の表す区間に含まれる要素のうち、 upper_bound 未満 の値の最大値を返します。

存在しない場合は nil を返します。


[ View source ]
def size (*args, **options) #

[ View source ]
def size (*args, **options, &) #

[ View source ]
def unsafe_fetch (index : Int ) #
Description copied from module Indexable(T)

Returns the element at the given index , without doing any bounds check.

Indexable makes sure to invoke this method with index in 0...size , so converting negative indices to positive ones is not needed here.

Clients never invoke this method directly. Instead, they access elements with #[](index) and #[]?(index) .

This method should only be directly invoked if you are absolutely sure the index is in bounds, to avoid a bounds check for a small boost of performance.


[ View source ]