如何查找缺失的數(shù)字,omniPoller

一、數(shù)組元素為1-100的數(shù),如何查找缺失的數(shù)字
解題思路:數(shù)字有規(guī)律,只缺失一個數(shù)字的話好判斷,假如數(shù)字總和是sum1 ,那么確實的數(shù)字等于(sum1-sum2),sum2是不完整數(shù)組總和,假如1+2+3+4+5=15,演變算法5(5+1)/2 = 15,表達式為n(n+1)/2,假如確實的是3,這個總和就是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());

二、請實現(xiàn)一個功能' omniPoller '做以下:

  • ' omniPoller '函數(shù)接受兩個參數(shù):' queryStatus '和' successCallback '
  • ' queryStatus '是一個返回' true '或' false '的函數(shù)
    ' successCallback '是一個函數(shù),應(yīng)該在' queryStatus '返回' true '時調(diào)用。
    -“omniPoller”應(yīng)該定期調(diào)用“queryStatus”
    -當' queryStatus '返回false時,它會等待一段時間并再次調(diào)用' queryStatus ',直到' queryStatus '返回' true '
  • ' queryStatus '調(diào)用之間的等待間隔每次增加1.5倍,從1秒開始
    -當' queryStatus '返回true時,調(diào)用' successCallback '并退出函數(shù)
    例如:
    -第一次:等待1秒鐘
    -第二次:調(diào)用' queryStatus ',返回' false ',等待1.5秒
    -第三次:調(diào)用' queryStatus ',它返回' false ',等待2.25秒
    -第四次:調(diào)用' queryStatus ',返回' true ',執(zhí)行' successCallback ',退出
    確保“omniPoller”通過以下測試用例:
    -“omniPoller”應(yīng)該等待1秒之前,它調(diào)用“queryStatus”第一次
    -除第一次(1秒)外,等候時間為前一次的1.5倍
    應(yīng)該允許‘omniPoller’被并發(fā)調(diào)用,并且函數(shù)的調(diào)用不會相互干擾
    注意:您不必在解決方案中實現(xiàn)' queryStatus '和' successCallback '。你可以假設(shè)它們是已知的。但是,您的實現(xiàn)“omniPoller”應(yīng)該能夠采取不同的實現(xiàn)“queryStatus”和“successCallback”沒有問題,并為此鼓勵您實現(xiàn)幾個版本的“queryStatus”和“successCallback”的測試目的
我只想到了一種解題方式,希望看到的朋友比我寫的更簡單

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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,220評論 0 9
  • 練習 小結(jié) 函數(shù)的返回值 1.函數(shù)的返回值:a.就是函數(shù)返回給調(diào)用者值b.就是return關(guān)鍵字后面的表達式的值c...
    Toto_fa49閱讀 437評論 0 5
  • 8月22日-----字符串相關(guān) 2-3 個性化消息: 將用戶的姓名存到一個變量中,并向該用戶顯示一條消息。顯示的消...
    future_d180閱讀 1,033評論 0 1
  • 我們叫做「人生」的那件事,其實應(yīng)該叫做「旅途」。別人的人生,只是你旅途中的一個瞥見,而你的人生又何嘗不是別人眼里的...
    公主夜未眠閱讀 300評論 0 3
  • 最近在得到App上吳軍老師專欄《Google方法論》里了解到一些Facebook創(chuàng)始人扎克伯格創(chuàng)業(yè)初期的事情。從扎...
    谷Sir閱讀 700評論 0 0

友情鏈接更多精彩內(nèi)容