文章目录
- 刷题前唠嗑
- 题目:下一个更大的数值平衡数
- 题目描述
- 代码与解题思路
- 官方解法
- 结语
刷题前唠嗑
LeetCode?启动!!!
题目:下一个更大的数值平衡数
题目链接:2048. 下一个更大的数值平衡数
题目描述
代码与解题思路
func nextBeautifulNumber(n int) int {for i := n+1; ; i++ { // 枚举cnt := [10]int{}for tmp := i; tmp > 0; tmp/=10 {cnt[tmp%10]++}isBeautifulNumber := truefor j := i; j > 0; j/=10 { // 判断是不是最小数值平衡数if j%10 != cnt[j%10] { isBeautifulNumber = falsebreak}}if isBeautifulNumber == true {return i}}
}
今天的每日一题不太难,主要是读懂题目的给的:最小数值平衡数 是个什么东西,就拿题目的样例来说
- 22,他的 2 有两个,他是最小数值平衡数
- 1333,他的 1 有一个,3 有三个,他是最小数值平衡数
- 3133,他的 1 有一个,3 有三个,他是最小数值平衡数
- 444422,他的 4 有四个,2 有两个,他是最小数值平衡数
通过这四个样例大概就知道什么是最小数值平衡数了,然后题目就是要我们求他给出的数的下一个最小数值平衡数,那最简单的方法就是往后枚举,然后判断,也就是我的做法。
官方解法
class Solution {
public:const vector<int> balance {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};int nextBeautifulNumber(int n) {return *upper_bound(balance.begin(), balance.end(), n);}
};
打表。。。
结语
还以为官方有什么好活呢,结果是打表