实际上,我正在自学算法,在这里我试图解决以下问题:
我们有一个任意顺序的n个正整数数组,我们有k,k>=1到n。问题是输出k个最小的奇数。如果 A 中的奇数个数小于 k,我们应该报告所有奇数。例如如果A = [2, 17, 3, 10, 28, 5, 9, 4, 12,13, 7] 并且k = 3,那么输出应该是3, 5, 9。我想解决这个问题在 O(n) 时间内。
我目前的解决方案是有另一个只有奇数的数组,然后我应用这个算法,即通过找到中位数并将列表分成 L、Median、Right 并比较 k 如下:
If |L|<k<= (|L|+|M|) Return the median
else if K<|L|, solve the problem recursively on (L)
else work on (R, k- (|L|+|M|)
任何帮助表示赞赏。