rkt*_*rkt 5 string algorithm file lines long-integer
第一行包含数字'N'的值,后跟多行.我可以按n ^ 2算法的顺序解决它.有人可以提出更好的建议吗?
您可以使用最小堆并在O(n*(log(N))中执行此操作:
heap = new Min-Heap(N)
foreach line in text:
if length(line) > heap.min():
heap.pop()
heap.insert(line)
foreach line in heap:
print to stdout: line.
Run Code Online (Sandbox Code Playgroud)它也可以在O(n)中使用Select(N)(选择第N个数字),然后在第N个数字周围进行分区(将所有大小或者等于第N个数字排列到它的一侧).
i = Select(lines, N)
partition(lines, i)
for i to size(lines):
print to stdout: lines[i]
Run Code Online (Sandbox Code Playgroud)