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

資訊專欄INFORMATION COLUMN

每日一題:一 石頭 ----- 這里注重算法和效率

wind3110991 / 2081人閱讀

摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從到的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從到。所以我們要改進一下算法。

比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從0到9的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從1到N。如果每個標(biāo)簽的成本是1美元,小明會花多少錢在這個項目上?

function rocks(int $n): int {
  return ;
}

其中:

$n為石頭數(shù),且$n為大于1的正整數(shù)
返回為需要的成本
例子:

小明發(fā)現(xiàn)了13塊石頭:
則石頭上的數(shù)字為:
1,2,3,4,5,6,7,8,9,10,11,12,13
所需要的標(biāo)簽為:
1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3
所需要的成本為:
17

這道題對于我們來講,很多人的固定思路就是以下這種

function rocks(a) {
  var str = "";
  for(var i=1; i<=a; i++){
    str += i;
  }
  return str.length;
}
rocks(13);

通過求長度的方式來解決這類問題,但是如果說數(shù)據(jù)量一大,就會造成溢出。所以我們要改進一下算法。
以下是我對這道題的理解:
通過題意得知,如果是1位數(shù)的,就是1張標(biāo)簽,如果是兩位數(shù)的就是兩個標(biāo)簽,如果是三位數(shù)的就是三個標(biāo)簽。
我們只需要循環(huán)他所傳遞的長度的次數(shù)就可以了,通過,等差數(shù)列的方式,求出次數(shù),
比如:
1位數(shù): 10-1 * 1
2位數(shù): 1010 - 101 * 2
3位數(shù): 101010 - 10 10 2
以下是我的代碼:

function rocks(int $n): int {
  // 得到長度.
  $length = strlen($n);
  $count = 0;
  if($length > 1){
    // 循環(huán)長度-1次. 這里求的是位數(shù)
    for($i=1;$i<$length;++$i){
      $count += $i * (pow(10,$i)-pow(10,$i-1));
    }
    // 如果到了 最后一次即到了  10的i次方   直接用n來減去即可
    $count += ($n - pow(10,$i-1) + 1)*$i;
    return $count;
  }else{
    return $n;
  }
}

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

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

相關(guān)文章

  • 每日: 石頭 ----- 這里注重算法效率

    摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從到的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從0到9的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從1到N。如果每個標(biāo)簽的成本是1...

    tigerZH 評論0 收藏0
  • 每日: 石頭 ----- 這里注重算法效率

    摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從到的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從0到9的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從1到N。如果每個標(biāo)簽的成本是1...

    frolc 評論0 收藏0
  • 每日: 石頭 ----- 這里注重算法效率

    摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從到的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數(shù)了數(shù)石頭,發(fā)現(xiàn)堆里有幾塊石頭,然后到商店去買標(biāo)簽。每一個標(biāo)簽都是從0到9的數(shù)字,每一個石頭都應(yīng)該分配一個唯一的數(shù)字,從1到N。如果每個標(biāo)簽的成本是1...

    sorra 評論0 收藏0
  • JS每日:Vue中的diff算法

    摘要:,文本節(jié)點的比較,需要修改,則會調(diào)用。,新節(jié)點沒有子節(jié)點,老節(jié)點有子節(jié)點,直接刪除老節(jié)點。所以一句話,的作用主要是為了高效的更新虛擬。 20190125 Vue中的diff算法? 概念: diff算法是一種優(yōu)化手段,將前后兩個模塊進行差異對比,修補(更新)差異的過程叫做patch(打補丁) 為什么vue,react這些框架中都會有diff算法呢? 我們都知道渲染真實dom的開銷是很大的...

    Caicloud 評論0 收藏0
  • 小李飛刀:做題第九彈!

    摘要:不過可能還沒有抓到動態(tài)規(guī)劃的真諦,總覺得哪里需要再校正下思路。這題也是動態(tài)規(guī)劃的題目,目標(biāo)總是要分解為子問題??偨Y(jié)看算法圖解的時候,涉及動態(tài)規(guī)劃的小結(jié)中有這樣的每種動態(tài)規(guī)劃解決方案都涉及網(wǎng)格。 寫在前面的話 感覺做題越多遇到的寫法越多,有種躍躍欲試的感覺~ 認(rèn)真做題 第一題 70. 爬樓梯難度:簡單假設(shè)你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少...

    Bamboy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<