33,009
社区成员
发帖
与我相关
我的任务
分享
Array.prototype.getElementMax = function(k) {
var i = 0, arr = this, M = Math.max.apply(Math, arr);
arr.join(",").replace(/[^,]+/g, function($){if($ == M){arr[i] = 0; return} i++});
return k ? [M].concat(arr.getElementMax(--k)) : [];
}
var arr = [], obj = {};
while (arr.length < 1000) {
var num = Math.random() * 10000 >> 0;
obj[num] || (arr.push(num), obj[num] = true);
}
alert(arr.getElementMax(3).pop()); //第3(k)大整数
//alert(arr.getElementMax(3)); //前3(k)大整数
def find(a,k):
result = sorted(a[0:k])
for x in a[k:]:
if x>result[0]:
result.pop(0)
#bi sect search
lo = 0
hi = k-1
while lo<hi:
mid = (lo+hi)//2
if x>result[mid]:
lo = mid+1
else:
hi = mid
result.insert(lo, x)
print(result)
find([3,4,5,2,1,3,4,5,6],3)