成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

答案——腐爛的橘子算法題目

Nekron / 3304人閱讀

摘要:題目要求請(qǐng)戳假如一個(gè)格子的盒子里有個(gè)新鮮橘子,有個(gè)爛橘子。每隔一分鐘我們?nèi)ミ@個(gè)盒子里面數(shù)一數(shù),直到爛橘子沒(méi)有增加。沒(méi)有新鮮的橘子,返回分鐘數(shù)。如果這四個(gè)位置部分位置有新鮮的橘子,那么腐爛還會(huì)繼續(xù)。

題目要求請(qǐng)戳

假如一個(gè)M x M 格子的盒子里有 nn > 0)個(gè)新鮮橘子,有 m 個(gè)爛橘子。每隔一分鐘我們?nèi)ミ@個(gè)盒子里面數(shù)一數(shù),直到爛橘子沒(méi)有增加。結(jié)果就是:

1.并且還有新鮮的橘子,返回 -1。

2.沒(méi)有新鮮的橘子,返回分鐘數(shù)。

第一步將二維數(shù)組初始化為一維數(shù)組:

function initData(a){
  var 
    result = [],
    n = 0,
    m = 0,
    j = 0;
  for(j = 0; j < M; j++) {
    result[j * M + 0] = { status: a[j][0], willBletOthers: a[j][0] === 2 };
    result[j * M + 1] = { status: a[j][1], willBletOthers: a[j][1] === 2 };
    result[j * M + 2] = { status: a[j][2], willBletOthers: a[j][2] === 2 };

    if (a[j][0] == 1) {
      n += 1;
    }
    if (a[j][1] == 1) {
      n += 1;
    }
    if (a[j][2] == 1) {
      n += 1;
    }

    if (a[j][0] == 2) {
      m += 1;
    }
    if (a[j][1] == 2) {
      m += 1;
    }
    if (a[j][2] == 2) {
      m += 1;
    }
  }
  return {
    result: result,
    n: n,
    m: m
  };
}

每隔一分鐘,一個(gè)放在 x 位置的格子的爛橘子,其他四個(gè)位置 x + 1、x - 1x + M 、x - M,都會(huì)腐爛(注意邊界)。如果這四個(gè)位置部分位置有新鮮的橘子,那么腐爛還會(huì)繼續(xù)。然后繼續(xù)觀察其他位置,直到最后一個(gè)格子。下一分鐘再來(lái)看

function blet(index, result){
    var bletNum = 0;
    if(-1< index + 1 && index + 1 < M*M && result[index + 1].status == 1){
        bletNum += 1;
        result[index + 1] = {status: 2, willBletOthers: false}
    }
    if(-1< index + M && index + M < M*M && result[index + M].status == 1){
        bletNum += 1;
        result[index + M] = {status: 2, willBletOthers: false}
    }
    
    if(-1< index - 1 && index - 1 < M*M && result[index - 1].status == 1){
        bletNum += 1;
        result[index - 1] = {status: 2, willBletOthers: true}
    }
    if(-1< index - M && index - M < M*M && result[index - M].status == 1){
        bletNum += 1;
        result[index - M] = {status: 2, willBletOthers: true}
    }
    return bletNum;
}
var 
  M = 3,
  rawData = [[2, 1, 1], [1, 1, 0], [0, 1, 1]];
  
function letGo(rawData){
    var data = initData(rawData),
        result = data.result,
        n = data.n,
        m = data.m,
        k,
        mins = 0,
        sum;

    if(m == 0 && n > 0){
        return -1;
    }
    if(m == 0 && n == 0){
        return 0;
    }
    while (n > 0 && m > 0) {
        mins += 1;
        sum = 0;
        for (k = 0; k < result.length; k++) {
            if (result[k].status == 2) {
                if (result[k].willBletOthers) {
                    sum += blet(k, result);
                } else {
                    result[k].willBletOthers = true;
                }
            }
        }

        if (sum === 0) {
            break;
        } else {
            n -= sum;
            m += sum;
        }
    }

    return mins;
}

console.log(letGo(rowData)); 



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102526.html

相關(guān)文章

  • Java重構(gòu)-策略模式、狀態(tài)模式、衛(wèi)語(yǔ)句

    摘要:前言當(dāng)代碼中出現(xiàn)多重語(yǔ)句或者語(yǔ)句時(shí)。代替多重分支這個(gè)情況的代替方式是可以為晴天時(shí)處理邏輯下雨時(shí)處理邏輯陰天時(shí)處理邏輯策略模式使用策略模式可以代替多重和語(yǔ)句,讓代碼維護(hù)變得更加簡(jiǎn)單。狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為。 前言 當(dāng)代碼中出現(xiàn)多重if-else語(yǔ)句或者switch語(yǔ)句時(shí)。弊端之一:如果這樣的代碼出現(xiàn)在多處,那么一旦出現(xiàn)需求變更,就需要把所有地方的if-els...

    Sourcelink 評(píng)論0 收藏0
  • 從一個(gè)京東實(shí)習(xí)生招聘題目討論算法選擇

    摘要:生日禮物題目來(lái)源京東實(shí)習(xí)生招聘原題鏈接可在線提交賽碼網(wǎng)題目描述的生日快到了,這一次,小東決定為送一份特別的生日禮物為其慶生。小東計(jì)劃送一個(gè)生日卡片,并通過(guò)特別的包裝讓永遠(yuǎn)難忘。 最近2個(gè)月時(shí)間都比較忙,另外還有些其他的事情,幾乎沒(méi)有怎么做題和寫文章了,害怕自己又開(kāi)始懶散起來(lái)了,所以還是督促自己不斷地學(xué)習(xí)和練習(xí)編碼。最近還需要好好學(xué)下python面向?qū)ο蟮囊恍┲R(shí)了。今天我們來(lái)分析一個(gè)J...

    894974231 評(píng)論0 收藏0
  • 【周刊-2】三年大廠面試官-前端面試題(偏難)

    摘要:前言在大廠工作了年,當(dāng)了年的前端面試官,把大廠常問(wèn)的面試題與答案匯總在我的中。第題如何劫持的請(qǐng)求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問(wèn)到如何劫持請(qǐng)求的時(shí)候就一臉懵逼,是因?yàn)檫€是停留在理論性階段。前言 在大廠工作了6年,當(dāng)了3年的前端面試官,把大廠常問(wèn)的面試題與答案匯總在我的Github中。希望對(duì)大家有所幫助,助力大家進(jìn)入自己理想的企業(yè)。 項(xiàng)目地址是:git...

    silvertheo 評(píng)論0 收藏0
  • 【周刊-2】三年大廠面試官-前端面試題(偏難)

    摘要:前言在大廠工作了年,當(dāng)了年的前端面試官,把大廠常問(wèn)的面試題與答案匯總在我的中。第題如何劫持的請(qǐng)求,提供思路難度阿里騰訊很多人在上搜索前端面試詳解,把答案倒背如流,但是問(wèn)到如何劫持請(qǐng)求的時(shí)候就一臉懵逼,是因?yàn)檫€是停留在理論性階段。 前言 在大廠工作了6年,當(dāng)了3年的前端面試官,把大廠常問(wèn)的面試題與答案匯總在我的Github中。希望對(duì)大家有所幫助,助力大家進(jìn)入自己理想的企業(yè)。 項(xiàng)目地址是:...

    madthumb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<