2018-10-01-weekly

Algorithm

77. 组合

  • What 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

  • How 利用递归的思想,当凑够k个数时,就回退回去,remove掉一个数,在进行组合 。

  • Key Codes

class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        if (k > n)
        {
            return res;
        }
        List<Integer> list = new ArrayList<Integer>();
        getComb(n, k, list, res, 1);
        return res;  
    }
     public void getComb(int n, int k, List<Integer> list, List<List<Integer>> ret, int start)
    {
        if (list.size() == k)
        {
            ret.add(new ArrayList<Integer>(list));
            return;
        }
        int len = list.size();
        for (int i = start; i <= n; i++)
        {
            if (n - i < (k - len-1))
            {
                return;
            }
            list.add(i);
            getComb(n, k, list, ret, i + 1);
            list.remove(list.size() - 1);
        }
    }
}

Review

Learning how to learn: CS Edition

  • What 学习如何学习,遇到挫折怎么办?
  • How 不要放弃!“生命中的一切都有解决,除了死亡”所以享受你的生活,学习你所爱的东西。
  • 请求帮忙
  • 多社交
  • 好好学数学
  • 多阅读

Tip

  • What 如何快速停止一个处于睡眠状态的线程?
  • How 通过pthread_cond_wait实现睡眠函数,通过pthread_cond_signal来快速停止睡眠

Share

十大经典排序算法

posted @ 2018-10-22 10:00  蓝幸运  阅读(89)  评论(0编辑  收藏  举报