一辛馆、數(shù)組元素為1-100的數(shù)昔驱,如何查找缺失的數(shù)字
解題思路:數(shù)字有規(guī)律,只缺失一個(gè)數(shù)字的話好判斷洛史,假如數(shù)字總和是sum1 惯殊,那么確實(shí)的數(shù)字等于(sum1-sum2),sum2是不完整數(shù)組總和也殖,假如1+2+3+4+5=15土思,演變算法5(5+1)/2 = 15,表達(dá)式為n(n+1)/2忆嗜,假如確實(shí)的是3己儒,這個(gè)總和就是12,所以拿15減去12就可以求出答案;
function getmissing(){
var arr = [1,2,5,4,6,7,8]
var n = arr.length+1;
var expectsum = n*(n+1)/2;
var sum = 0;
arr.map(item=>sum+=item);
return expectsum-sum;
}
console.log(getmissing());
二捆毫、請(qǐng)實(shí)現(xiàn)一個(gè)功能' omniPoller '做以下:
- ' omniPoller '函數(shù)接受兩個(gè)參數(shù):' queryStatus '和' successCallback '
- ' queryStatus '是一個(gè)返回' true '或' false '的函數(shù)
' successCallback '是一個(gè)函數(shù)闪湾,應(yīng)該在' queryStatus '返回' true '時(shí)調(diào)用。
-“omniPoller”應(yīng)該定期調(diào)用“queryStatus”
-當(dāng)' queryStatus '返回false時(shí)冻璃,它會(huì)等待一段時(shí)間并再次調(diào)用' queryStatus '响谓,直到' queryStatus '返回' true ' - ' queryStatus '調(diào)用之間的等待間隔每次增加1.5倍损合,從1秒開始
-當(dāng)' queryStatus '返回true時(shí)省艳,調(diào)用' successCallback '并退出函數(shù)
例如:
-第一次:等待1秒鐘
-第二次:調(diào)用' queryStatus ',返回' false '嫁审,等待1.5秒
-第三次:調(diào)用' queryStatus '跋炕,它返回' false ',等待2.25秒
-第四次:調(diào)用' queryStatus '律适,返回' true '辐烂,執(zhí)行' successCallback '遏插,退出
確保“omniPoller”通過(guò)以下測(cè)試用例:
-“omniPoller”應(yīng)該等待1秒之前纠修,它調(diào)用“queryStatus”第一次
-除第一次(1秒)外胳嘲,等候時(shí)間為前一次的1.5倍
應(yīng)該允許‘omniPoller’被并發(fā)調(diào)用,并且函數(shù)的調(diào)用不會(huì)相互干擾
注意:您不必在解決方案中實(shí)現(xiàn)' queryStatus '和' successCallback '扣草。你可以假設(shè)它們是已知的了牛。但是,您的實(shí)現(xiàn)“omniPoller”應(yīng)該能夠采取不同的實(shí)現(xiàn)“queryStatus”和“successCallback”沒(méi)有問(wèn)題辰妙,并為此鼓勵(lì)您實(shí)現(xiàn)幾個(gè)版本的“queryStatus”和“successCallback”的測(cè)試目的
我只想到了一種解題方式鹰祸,希望看到的朋友比我寫的更簡(jiǎn)單
var num = 1;
function omniPoller(queryStatus,Callback){
let timer = 1000;
let cleartime = setInterval(() => {
if(num!=1){
timer = timer*1.5;
}
console.log(timer)
let status = queryStatus();
if(status){
Callback();
clearInterval(cleartime)
}
}, timer);
}
function queryStatus(){
num+=1;
return num==5?true:false;
}
function successCallback(){
console.log("成功")
}
omniPoller(queryStatus,successCallback);