leetcode357. 计算各个位数不同的数字个数(回溯)
生活随笔
收集整理的這篇文章主要介紹了
leetcode357. 计算各个位数不同的数字个数(回溯)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 ≤ x < 10n 。示例:輸入: 2
輸出: 91
解釋: 答案應為除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 區間內的所有數字。
代碼
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;//已經選過了check[i]=true;countNumbers(n,sum*10+i,level+1,check);check[i]=false;//回溯}} }總結
以上是生活随笔為你收集整理的leetcode357. 计算各个位数不同的数字个数(回溯)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到考试没考好现实会考好吗
- 下一篇: leetcode1415. 长度为 n