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] =
|
||||
## returns the (key,val)-pair with the smallest `val`. Efficiency: O(n)
|
||||
assert t.len > 0
|
||||
var minIdx = 0
|
||||
var minIdx = -1
|
||||
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.val = t.data[minIdx].val
|
||||
|
||||
|
|
@ -1329,3 +1330,7 @@ when isMainModule:
|
|||
assert((a == b) == 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