Fix counttable smallest (#6912)
This commit is contained in:
parent
d550417f8b
commit
542d45f882
1 changed files with 7 additions and 2 deletions
|
|
@ -993,9 +993,10 @@ proc inc*[A](t: var CountTable[A], key: A, val = 1) =
|
||||||
proc smallest*[A](t: CountTable[A]): tuple[key: A, val: int] =
|
proc smallest*[A](t: CountTable[A]): tuple[key: A, val: int] =
|
||||||
## returns the (key,val)-pair with the smallest `val`. Efficiency: O(n)
|
## returns the (key,val)-pair with the smallest `val`. Efficiency: O(n)
|
||||||
assert t.len > 0
|
assert t.len > 0
|
||||||
var minIdx = 0
|
var minIdx = -1
|
||||||
for h in 1..high(t.data):
|
for h in 1..high(t.data):
|
||||||
if t.data[h].val > 0 and t.data[minIdx].val > t.data[h].val: minIdx = h
|
if t.data[h].val > 0 and (minIdx == -1 or t.data[minIdx].val > t.data[h].val):
|
||||||
|
minIdx = h
|
||||||
result.key = t.data[minIdx].key
|
result.key = t.data[minIdx].key
|
||||||
result.val = t.data[minIdx].val
|
result.val = t.data[minIdx].val
|
||||||
|
|
||||||
|
|
@ -1329,3 +1330,7 @@ when isMainModule:
|
||||||
assert((a == b) == true)
|
assert((a == b) == true)
|
||||||
assert((b == a) == true)
|
assert((b == a) == true)
|
||||||
|
|
||||||
|
block: # CountTable.smallest
|
||||||
|
var t = initCountTable[int]()
|
||||||
|
for v in items([4, 4, 5, 5, 5]): t.inc(v)
|
||||||
|
doAssert t.smallest == (4, 2)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue