LeetCode至 少有 1 位重複的數字

2022-05-15 08:42:03 字數 1050 閱讀 7143

示例 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可以解決,不知道怎麼寫。

考慮一種通解的方法:原答案即n-沒有重複的數字。關鍵是求沒有重複的數字

對於位數比n小的情況,我們可以直接排列組合求。

對於與n相同的情況,我們從最高位根據數字的限制(limit)依此排列求解

int c(int m,int

n)

return

res;

}int numdupdigitsatmostn(int

n)

if(contain[a[i]]>0

)

break

; contain[a[i]]++;

}return n-res;

}

數字dp

int dfs(int t, bool up, bool ze, bool rp, int

mask)

ret += dfs(t - 1, up & (i == i), ze & (i == 0

), nrp, nmas);

}if (!up) dp[t][ze][rp][mask] =ret;

return

ret;

}int numdupdigitsatmostn(int

n)

return dfs(n - 1, 1, 1, 0, 0

);

}

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

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

至少有 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...