Documentation
¶
Index ¶
- type PartialSum
- func (ps PartialSum) AllSum() uint64
- func (ps PartialSum) Find(val uint64) (ind uint64, offset uint64)
- func (ps *PartialSum) IncTail(ind uint64, val uint64)
- func (ps PartialSum) Lookup(ind uint64) (val uint64)
- func (ps PartialSum) LookupAndSum(ind uint64) (val uint64, sum uint64)
- func (ps PartialSum) MarshalBinary() (out []byte, err error)
- func (ps PartialSum) Num() uint64
- func (ps PartialSum) Sum(ind uint64) (sum uint64)
- func (ps *PartialSum) UnmarshalBinary(in []byte) (err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PartialSum ¶
type PartialSum struct {
// contains filtered or unexported fields
}
PartialSum stores non-negative integers V[0...N) and supports Sum, Find in O(1) time using at most (S + N) bits where S is the sum of V[0...N)
func (PartialSum) Find ¶
func (ps PartialSum) Find(val uint64) (ind uint64, offset uint64)
Find returns ind satisfying Sum(ind) <= val < Sum(ind+1) and val - Sum(ind). If there are multiple inds satisfiying this condition, return the minimum one.
func (*PartialSum) IncTail ¶
func (ps *PartialSum) IncTail(ind uint64, val uint64)
IncTail adds: V[ind] += val ind should hold ind >= Num
func (PartialSum) Lookup ¶
func (ps PartialSum) Lookup(ind uint64) (val uint64)
Lookup returns V[i] in O(1) time
func (PartialSum) LookupAndSum ¶
func (ps PartialSum) LookupAndSum(ind uint64) (val uint64, sum uint64)
LookupAndSum returns V[i] and V[0]+V[1]+...+V[i-1] in O(1) time
func (PartialSum) MarshalBinary ¶
func (ps PartialSum) MarshalBinary() (out []byte, err error)
MarshalBinary encodes VecString into a binary form and returns the result.
func (PartialSum) Sum ¶
func (ps PartialSum) Sum(ind uint64) (sum uint64)
Sum returns V[0]+V[1]+...+V[ind-1] in O(1) time
func (*PartialSum) UnmarshalBinary ¶
func (ps *PartialSum) UnmarshalBinary(in []byte) (err error)
UnmarshalBinary decodes the FixVec form a binary from generated MarshalBinary