在这张快速选择的演讲幻灯片中,“ k ”到底是什么意思?
问问题
315 次
1 回答
2
假设你拿了一个号码x
。
设L
为小于x
数组中的数字集合,集合的大小为|L|
设E
是数组中等于的数字集合,集合的x
大小为|E|
设G
为大于x
数组中的数字集合,集合的大小为|G|
让我们想象一下排序后的数组,第一个|L|
数字(1 -> |L|)
包含在 set 中L
。
以下|E|
数字(|L|+1 -> |L|+|E|)
包含在 set 中E
。
以下|G|
数字(|L|+|E|+1 -> end)
包含在 set 中G
。
我们正在寻找kth
最小的数字,所以我们有 3 种情况:
1)k <= |L|
这意味着我们要查找的|L|
数字在排序数组的第一个数字中,因此我们在 中搜索kth
最小的数字L
。
2)|L| < k <= |L|+|E|
这意味着我们要查找的数字(|L|+1 -> |L|+|E|)
在排序数组中的位置之间,因此它是来自 的元素E
。由于 的所有元素E
都等于x
,我们知道kth
最小的数等于x
。
3)k > |L|+|E|
这意味着我们正在寻找的数字(|L|+|E|+1 -> end)
在排序数组中的位置之间,所以它是'G'中的一个元素。由于已经有|L|+|E|
小于kth
最小数字的数字,我们可以|L|+|E|
从中减去k
,我们称之为k'
( k' = k - |L| - |E|
),然后在 中搜索k'th
最小元素G
。
于 2017-12-14T12:54:25.630 回答