标签: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 sub cto solution 标签 简单 code ++ push
原文地址:https://www.cnblogs.com/left4back/p/10434477.html