1012 至少有 1 位重複的數字 hard

2021-10-25 03:24:58 字數 1018 閱讀 7201

給定正整數 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...