码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode[967]连续差相同的数字

时间:2019-02-25 23:34:05      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:leetcode   sub   cto   solution   标签   简单   code   ++   push   

这题的标签有问题。。我本来是想熟悉一下dp的,然而这道题似乎不用dp更简单一点,现在反而是递归越用越熟练。

前面递归已经降了很多了,这题只要知道是用递归,后面就很简单了,不再赘述。如有更好的方法或任何问题,都欢迎指出。

class Solution {
public:
    vector<int> numsSameConsecDiff(int N, int K) {
        int startdigit = (N == 1) ? 0: 1;
        vector<int> ans;
        while (startdigit < 10) {
            vector<int> subans = recursion(startdigit, N-1, K);
            ans.insert(ans.end(), subans.begin(), subans.end());
            ++startdigit;
        }
        return ans;
    }
    
    vector<int> recursion(int root, int N, int K) {
        vector<int> sub1;
        if (N == 0) {
            sub1.push_back(root);
            return sub1;
        }
        int lastdigit = root%10;
        int nextdigit = lastdigit + K;
        if (nextdigit < 10) {
            sub1 = recursion(root*10+nextdigit, N-1, K);
        }
        vector<int> sub2;
        if (K != 0) {
            nextdigit = lastdigit - K;
            if (nextdigit >= 0) {
                sub2 = recursion(root*10+nextdigit, N-1, K);
                sub1.insert(sub1.end(), sub2.begin(), sub2.end());
            }
        }
        return sub1;
    }
};

 

LeetCode[967]连续差相同的数字

标签:leetcode   sub   cto   solution   标签   简单   code   ++   push   

原文地址:https://www.cnblogs.com/left4back/p/10434477.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!