给出一组x> 0且权重为W的n个元素。找出所需总和等于或大于W的最小元素。 我正在努力寻找线性时间(O(n))算法。
[编辑:线性排序算法不能使用,因为所有值都是有理数(也是有理数)]
答案 0 :(得分:1)
首先,您需要对这些元素进行排序。然后,您可以轻松地找到线性时间内的最小元素数。只要这个UPDATE tableOne
SET columnOne = tableTwo.columnOne::text
FROM tableTwo
WHERE tableTwo.tableId = tableOne.tableId AND
tableOne.columnTwo ~ '-0[2-9]-' and
tableOne.columnOne is distinct from tableTwo.columnOne::text;
,您就需要从最大的元素到最小的元素求和。
通常的排序算法采用tableOne.columnTwo
。因此,您需要一种用于在线性时间内对数字进行排序的算法。如果您有一组整数,则可以使用以下一种算法http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/chap09.htm