摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從到的數字,每一個石頭都應該分配一個唯一的數字,從到。所以我們要改進一下算法。
比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從0到9的數字,每一個石頭都應該分配一個唯一的數字,從1到N。如果每個標簽的成本是1美元,小明會花多少錢在這個項目上?
function rocks(int $n): int { return ; }
其中:
$n為石頭數,且$n為大于1的正整數
返回為需要的成本
例子:
小明發現了13塊石頭: 則石頭上的數字為: 1,2,3,4,5,6,7,8,9,10,11,12,13 所需要的標簽為: 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);
通過求長度的方式來解決這類問題,但是如果說數據量一大,就會造成溢出。所以我們要改進一下算法。
以下是我對這道題的理解:
通過題意得知,如果是1位數的,就是1張標簽,如果是兩位數的就是兩個標簽,如果是三位數的就是三個標簽。
我們只需要循環他所傳遞的長度的次數就可以了,通過,等差數列的方式,求出次數,
比如:
1位數: 10-1 * 1
2位數: 1010 - 101 * 2
3位數: 101010 - 10 10 2
以下是我的代碼:
function rocks(int $n): int { // 得到長度. $length = strlen($n); $count = 0; if($length > 1){ // 循環長度-1次. 這里求的是位數 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; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83892.html
摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從到的數字,每一個石頭都應該分配一個唯一的數字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從0到9的數字,每一個石頭都應該分配一個唯一的數字,從1到N。如果每個標簽的成本是1...
摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從到的數字,每一個石頭都應該分配一個唯一的數字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從0到9的數字,每一個石頭都應該分配一個唯一的數字,從1到N。如果每個標簽的成本是1...
摘要:比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從到的數字,每一個石頭都應該分配一個唯一的數字,從到。所以我們要改進一下算法。 比較無聊的一天,小明決定列舉了一大堆石頭。他先數了數石頭,發現堆里有幾塊石頭,然后到商店去買標簽。每一個標簽都是從0到9的數字,每一個石頭都應該分配一個唯一的數字,從1到N。如果每個標簽的成本是1...
摘要:,文本節點的比較,需要修改,則會調用。,新節點沒有子節點,老節點有子節點,直接刪除老節點。所以一句話,的作用主要是為了高效的更新虛擬。 20190125 Vue中的diff算法? 概念: diff算法是一種優化手段,將前后兩個模塊進行差異對比,修補(更新)差異的過程叫做patch(打補丁) 為什么vue,react這些框架中都會有diff算法呢? 我們都知道渲染真實dom的開銷是很大的...
摘要:不過可能還沒有抓到動態規劃的真諦,總覺得哪里需要再校正下思路。這題也是動態規劃的題目,目標總是要分解為子問題。總結看算法圖解的時候,涉及動態規劃的小結中有這樣的每種動態規劃解決方案都涉及網格。 寫在前面的話 感覺做題越多遇到的寫法越多,有種躍躍欲試的感覺~ 認真做題 第一題 70. 爬樓梯難度:簡單假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少...
閱讀 2574·2021-09-30 09:48
閱讀 2564·2019-08-30 14:10
閱讀 2708·2019-08-29 11:22
閱讀 1837·2019-08-26 13:51
閱讀 2276·2019-08-26 12:02
閱讀 2415·2019-08-23 16:06
閱讀 3548·2019-08-23 14:06
閱讀 1093·2019-08-23 13:56