组合

问题描述

https://leetcode-cn.com/problems/combinations/submissions/

收获

  1. 组合与排列的不同之处在于,组合只能向后看,排列是删除一个元素,组合是删除该元素以及该元素之前的所有元素!
  2. 组合的另外一个不同在于,组合必须有一个停止条件,要么是元素个数,要么是元素之和要满足一定的条件!
  3. 其他的地方与排列无异,都是利用了回溯的思想!

组合总和

问题描述

https://leetcode-cn.com/problems/combination-sum/

  1. 无重复元素
  2. 每个元素可被重复选取

收获

  1. 排序可以用break,不排序就只能用continue;

组合总和2

问题描述

  1. 可有重复元素
  2. 元素不可被重复使用 https://leetcode-cn.com/problems/combination-sum-ii/

收获

  1. 比起全排列,这里不再需要visited辅助数组,因为在组合中是把first之前的所有元素都删除掉!只需要对first进行更改即可
  2. 相当于用first和nums结合。

组合总数3

问题描述

  1. 和为n的k个数字的组合
  2. 组合中只允许出现1-9的正整数 https://leetcode-cn.com/problems/combination-sum-iii/

收获

  1. 其实比组合总数2简单,唯一的不同点在于两个终止条件的判断

组合总数4

问题描述

  1. 不需要列出所有的可能的组合,只需要计算有多少种组合;
  2. 正整数,且不存在重复数字。
  3. 允许元素重复使用。
  4. 顺序不同的序列被视为不同的组合。

https://leetcode-cn.com/problems/combination-sum-iv/

收获

  1. 需要利用动态规划的思想,而且是类似背包的思想。