每日一题之顺次数

2020-04-15  本文已影响0人  this_is_for_u

题目1291:顺次数

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。

请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。

示例1:

输出:low = 100, high = 300
输出:[123,234]

示例2:

输出:low = 1000, high = 13000
输出:[1234,2345,3456,4567,5678,6789,12345]

提示:

分析

既然是求顺次数,那就顺序遍历出来好啦,貌似没啥需要分析的...

代码

class Solution {
public:
    vector<int> sequentialDigits(int low, int high) {
        string str = "123456789";
        string low_str = std::to_string(low);
        int low_len = low_str.size();
        return dfs(str, low_len, low, high);
    }

    vector<int> dfs(string &str, int low_len, int low, int high) {
        vector<int> ret;
        for (int i = low_len; i < 10; ++i) {
            for (int j = 0; j + i <= str.size(); ++j) {
                string tem_str = str.substr(j, i);
                int tem_int = stoi(tem_str);
                if (tem_int > high) {
                    return ret;
                }
                if (tem_int >= low) {
                    ret.push_back(tem_int);
                }
            }
        }
        return ret;
    }

};
上一篇下一篇

猜你喜欢

热点阅读