LC5907-下一个更大的平衡数
5907. 下一个更大的数值平衡数
打表 + 二分
class Solution {
public:
vectort;
int nextBeautifulNumber(int n) {
t = {0,1,22,122,212,221,333,1333,3133,3313,3331,4444,14444,22333,23233,23323,23332,32233,32323,32332,33223,33232,33322,41444,44144,44414,44441,55555,122333,123233,123323,123332,132233,132323,132332,133223,133232,133322,155555,212333,213233,213323,213332,221333,223133,223313,223331,224444,231233,231323,231332,232133,232313,232331,233123,233132,233213,233231,233312,233321,242444,244244,244424,244442,312233,312323,312332,313223,313232,313322,321233,321323,321332,322133,322313,322331,323123,323132,323213,323231,323312,323321,331223,331232,331322,332123,332132,332213,332231,332312,332321,333122,333212,333221,422444,424244,424424,424442,442244,442424,442442,444224,444242,444422,515555,551555,555155,555515,555551,666666,1224444,1242444,1244244,1244424,1244442,1422444,1424244,1424424,1424442,1442244,1442424,1442442,1444224,1444242,1444422,1666666};
int l = 0, r = t.size() - 1;
while(l < r){
int mid = l + (r - l) / 2;
if(t[mid] > n) r = mid;
else l = mid + 1;
}
return t[l];
}
};