leetcode357. 计算各个位数不同的数字个数(回溯)
生活随笔
收集整理的這篇文章主要介紹了
leetcode357. 计算各个位数不同的数字个数(回溯)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一個(gè)非負(fù)整數(shù) n,計(jì)算各位數(shù)字都不同的數(shù)字 x 的個(gè)數(shù),其中 0 ≤ x < 10n 。示例:輸入: 2
輸出: 91
解釋: 答案應(yīng)為除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 區(qū)間內(nèi)的所有數(shù)字。
代碼
class Solution {int numbers=0;public int countNumbersWithUniqueDigits(int n) {if(n==0) return 1;countNumbers(n,0,0,new boolean[10]);return numbers;}public void countNumbers(int n,int sum,int level,boolean[] check) {if(level!=0) {numbers++;}if(level==n)//邊界{return;}for(int i=0;i<10;i++)//選擇{if(check[i]||check[0]&&level>0) continue;//已經(jīng)選過(guò)了check[i]=true;countNumbers(n,sum*10+i,level+1,check);check[i]=false;//回溯}} }總結(jié)
以上是生活随笔為你收集整理的leetcode357. 计算各个位数不同的数字个数(回溯)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做梦梦到考试没考好现实会考好吗
- 下一篇: leetcode1415. 长度为 n