标签:10 967 数字 sub1 int recursion vector LeetCode nextdigit
这题的标签有问题。。我本来是想熟悉一下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; } };
标签:10,967,数字,sub1,int,recursion,vector,LeetCode,nextdigit 来源: https://www.cnblogs.com/left4back/p/10434477.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。