Leetcode1689. 十-二进制数的最少数目[C++题解]:贪心、找规律简单题
文章目錄
- 題目
- 題目鏈接
題目
想法:初始想法是遍歷這些十-二進(jìn)制數(shù),看哪些和等于n。 發(fā)現(xiàn)行不通。
其實(shí)可以從11111這樣的數(shù)構(gòu)造。對(duì)于n的每一位,只要不為0就令該位為1.
比如 320 -110= 210 , 210 -110= 100 ,100-100=0 所以 320 =110 + 110 +100 只需要3個(gè)十二進(jìn)制數(shù)。 再比如 32 -11 = 21 ,21-11=10 ,10-10=0 ,所以32=11+11+10 ,可分為3個(gè)十二進(jìn)制數(shù)。
其實(shí),我們可以發(fā)現(xiàn),任何一個(gè)數(shù),都可以最多通過(guò)9次這種構(gòu)造就可以得到,因?yàn)槊總€(gè)位置的數(shù)最大是9(0~9).
規(guī)律是這樣的:對(duì)于n的每一位i,i的值是多少,就需要幾次可以減為0. 比如某一位是 5, 這一位需要5次才減為0。如果某一位是3,就需要3次才會(huì)減為0. 所以,實(shí)際上是求每一位的最大值,最大值就是需要的個(gè)數(shù)!!!
ac代碼
class Solution { public:int minPartitions(string n) {int res=0;for(auto c:n){res=max(res,c-'0'); //每一位的最大值}return res;} };題目鏈接
Leetcode1689. 十-二進(jìn)制數(shù)的最少數(shù)目
總結(jié)
以上是生活随笔為你收集整理的Leetcode1689. 十-二进制数的最少数目[C++题解]:贪心、找规律简单题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Leetcode1688. 比赛中的配对
- 下一篇: 二维vector的声明和初始化