function getWinner(arr, k){
var len = arr.length;
var count = 0;
while(1){
if(arr[0] > arr[1]){
let a = arr[1];
arr.splice(1, 1);
arr.push(a);
count++;
if(count == k){
return arr[0];
}
}else{
let a = arr.shift();
arr.push(a);
}
}
}
var arr = [3,2,1];
var k = 10;
这样写也可以,但是运行速度很慢,会报出超时错误。
var getWinner = function(arr, k) {
var len = arr.length;
var count = 0;
while(count < len - 1 && count < k){
if(arr[0] > arr[1]){
let a = arr[1];
arr.splice(1, 1);
arr.push(a);
count++;
}else{
let a = arr.shift();
count = 0;
arr.push(a);
count++;
}
}
return arr[0];
};
同样时间超限,md;
终于通过了,草拟码的
var getWinner = function(arr, k) {
var len = arr.length;
var count = 1;
var pre = Math.max(arr[0], arr[1]);
if(k == 1){
return pre;
}
for(let i = 2; i < len; i++){
let cur = arr[i];
if(pre > cur){
count++;
if(count == k){
return pre;
}
}else{
pre = cur;
count =1;
}
}
return pre;
};