如果整數??x
?滿足:對于每個數位?d
?,這個數位?恰好?在?x
?中出現?d
?次。那么整數?x
?就是一個?數值平衡數?。
給你一個整數?n
?,請你返回?嚴格大于?n
?的?最小數值平衡數?。
示例 1:
輸入:n = 1 輸出:22 解釋: 22 是一個數值平衡數,因為: - 數字 2 出現 2 次 這也是嚴格大于 1 的最小數值平衡數。
示例 2:
輸入:n = 1000 輸出:1333 解釋: 1333 是一個數值平衡數,因為: - 數字 1 出現 1 次。 - 數字 3 出現 3 次。 這也是嚴格大于 1000 的最小數值平衡數。 注意,1022 不能作為本輸入的答案,因為數字 0 的出現次數超過了 0 。
示例 3:
輸入:n = 3000 輸出:3133 解釋: 3133 是一個數值平衡數,因為: - 數字 1 出現 1 次。 - 數字 3 出現 3 次。 這也是嚴格大于 3000 的最小數值平衡數。
思路一:逐位分析
c++解法
class Solution {
public:bool isBalance(int x) {vector<int> count(10);while (x > 0) {count[x % 10]++;x /= 10;}for (int d = 0; d < 10; ++d) {if (count[d] > 0 && count[d] != d) {return false;}}return true;}int nextBeautifulNumber(int n) {for (int i = n + 1; i <= 1224444; ++i) {if (isBalance(i)) {return i;}}return -1;}
};