zoukankan      html  css  js  c++  java
  • LeetCode: Combinations

    初始系数没弄好,改了一次

     1 class Solution {
     2 public:
     3     void dfs(vector<vector<int>> &ret, int n, int k, int cur, int dep, vector<int> &tmp) {
     4         if (dep == k) {
     5             ret.push_back(tmp);
     6             return;
     7         }
     8         for (int i = cur; i <= n; i++) {
     9             tmp.push_back(i);
    10             dfs(ret, n, k, i+1, dep+1, tmp);
    11             tmp.pop_back();
    12         }
    13     }
    14     vector<vector<int> > combine(int n, int k) {
    15         // Start typing your C/C++ solution below
    16         // DO NOT write int main() function
    17         vector<vector<int>> ret;
    18         vector<int> tmp;
    19         if (!k || !n || k > n) return ret;
    20         dfs(ret, n, k, 1, 0, tmp);
    21         return ret;
    22     }
    23 };

     加一个iterative的方法

     1 class Solution {
     2 public:
     3     vector<vector<int> > combine(int n, int k) {
     4         // IMPORTANT: Please reset any member data you declared, as
     5         // the same Solution instance will be reused for each test case.
     6         vector<vector<int> > res;
     7         if (k == 0) return res;
     8         queue<vector<int> > S;
     9         for (int i = 1; i <= n; i++) S.push(vector<int>(1, i));
    10         while (!S.empty()) {
    11             vector<int> tmp = S.front();
    12             S.pop();
    13             if (tmp.size() == k) res.push_back(tmp);
    14             else {
    15                 for (int i = tmp.back()+1; i <= n; i++) {
    16                     vector<int> tmp1 = tmp;
    17                     tmp1.push_back(i);
    18                     S.push(tmp1);
    19                 }
    20             }
    21         }
    22         return res;
    23     }
    24 };

     C#

     1 public class Solution {
     2     public List<List<int>> Combine(int n, int k) {
     3         List<List<int>> ans = new List<List<int>>();
     4         if (k == 0) return ans;
     5         Queue<List<int>> S = new Queue<List<int>>();
     6         for (int i = 1; i <= n; i++) S.Enqueue(new List<int>{i});
     7         while (S.Count != 0) {
     8             List<int> tmp = S.Peek();
     9             S.Dequeue();
    10             if (tmp.Count == k) ans.Add(tmp);
    11             else {
    12                 for (int i = tmp[tmp.Count-1]+1; i <= n; i++) {
    13                     List<int> newTmp = new List<int>();
    14                     for (int j = 0; j < tmp.Count; j++) newTmp.Add(tmp[j]);
    15                     newTmp.Add(i);
    16                     S.Enqueue(newTmp);
    17                 }
    18             }
    19         }
    20         return ans;
    21     }
    22 }
    View Code

     Java

    注意clone对于基础数据类型和泛型类型来说就是deep copy,对于对象来说,对象里的基础数据类型是deep copy,而泛型类型则不是,需要override clone()。这题因为直接对List<Integer>进行clone,因此不需要override

     1 public class Solution {
     2     private List<List<Integer>> ans;
     3     public List<List<Integer>> combine(int n, int k) {
     4         ans = new LinkedList<List<Integer>>();
     5         LinkedList<Integer> tmp = new LinkedList<Integer>();
     6         dfs(n, k, 1, 0, tmp);
     7         return ans;
     8     }
     9     private void dfs(int n, int k, int cur, int dep, LinkedList<Integer> tmp)
    10     {
    11         if (dep == k)
    12         {
    13             ans.add((List<Integer>)tmp.clone());
    14             return;
    15         }
    16         for (int i = cur; i <= n; i++)
    17         {
    18             tmp.add(new Integer(i));
    19             dfs(n, k, i+1, dep+1, tmp);
    20             tmp.removeLast();
    21         }
    22     }
    23 }
  • 相关阅读:
    jar包打包成exe示例(基于maven项目)
    助教小工具
    HUST软件测试1504班: 第0周作业成绩
    软件质量与测试2018春第0周作业1:开设博客
    RobotFramework学习-问题
    Java读取本地文件乱码的解决方案
    滑动窗口模板题(对读写性能要求贼高)
    Invalid index name [xxx], must be lowercase
    Java自动装箱和自动拆箱的理解
    TKMabatis坑
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/2969052.html
Copyright © 2011-2022 走看看