給定正整數 n,返回小於等於 n 且具有至少 1 位重複數字的正整數的個數。
示例 1:
輸入:20
輸出:1
解釋:具有至少 1 位重複數字的正數(<= 20)只有 11 。
轉化為求都不重複的正整數的個數
例如高位是0
4th 3th 2th 1th total
0 0 0 1-9 9xa(9,0)
0 0 1-9 0-9 9xa(9,1)
0 1-9 0-9 0-9 9xa(9,2)
高位不是0
4th 3th 2th 1th total
1-2 0-9 0-9 0-9 2xa(9,3)
3 0-4 0-9 0-9 5xa(8,2)
3 5 0-5 0-9 6xa(7,1)
3 5 6 0-1 2xa(6,0)
3 5 6 2 1
class solution
//逆序排序
reverse(digits.begin(), digits.end());
vectordp(len+1, 0);
//高位是0的情況
for(int i = 1;i <= len; i++)
int cnt = 0;
for(int i = 1;i < len;i++) cnt += dp[i];
// 高位不是0
vectorvis(10, false);
for(int i = 0;i < len;i++)
for(int j = i + 1;j < len;j++)
k *= (10 - j);
cnt += k;
if(vis[digits[i]])
break;
vis[digits[i]] = true;
if(i == len - 1) cnt++;
}return n-cnt;
}};
LeetCode至 少有 1 位重複的數字
示例 1 輸入 20 輸出 1 解釋 具有至少 1 位重複數字的正數 20 只有 11 示例 2 輸入 100 輸出 10 解釋 具有至少 1 位重複數字的正數 100 有 11,22,33,44,55,66,77,88,99 和 100 示例 3 輸入 1000 輸出 262 數字dp可以解決,不...
至少有 K 個重複字元的最長子串
原題指路 至少有 k 個重複字元的最長子串 給你乙個字串s和乙個整數k,請你找出s中的最長子串,要求該子串中的每一字元出現次數都不少於k。返回這一子串的長度。這道題有別於一般的 滑動視窗 的題目,因為這道題視窗的維護條件需要人為新增一項,即視窗中的字元種類數。雖然這看起來很複雜,但是由於這題的資料範...
395 至少有 K 個重複字元的最長子串
給你乙個字串 s 和乙個整數 k 請你找出 s 中的最長子串,要求該子串中的每一字元出現次數都不少於 k 返回這一子串的長度。示例 1 輸入 s aaabb k 3 輸出 3 解釋 最長子串為 aaa 其中 a 重複了 3 次。示例 2 輸入 s ababbc k 2 輸出 5 解釋 最長子串為 a...