暴力枚举
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Next Permutation
题目大意:给出一个排列,求出它的下一个排列,如果不存在则返回升序的排列。 算法思想: 直接使用next_permutation()算法。 代码如下: class Solution { public: void nextPermutation(vector& nums) { if(nums.size()==0) return ; next_permut原创 2015-11-16 20:07:05 · 246 阅读 · 0 评论 -
LeetCode---Subsets II
题目大意:给出一个数组,数组中可能包含重复元素,列出其所有的子集合,要求子集合中的元素给递减排列且子集合不能够重复。 算法思想: 1.算法整体思想如LeetCode---Subsets 2.之后利用set的特性取出重复的子集合即可。 代码如下: class Solution { public: vector> subsetsWithDup(vector& nums) {原创 2015-11-16 18:11:40 · 315 阅读 · 0 评论 -
LeetCode---Subsets
题目大意:给出一个数组,列出所给数组的所有子集合,要求子集合中的元素非降序排列。 算法思想: 1.根据数组的规模计算出子集合的个数sub_count。 2.由于要使子集合中的元素非降序排列则将原始数组排序。 3.将每个子集合编号赋值范围为0~sub_count-1,将编号值转化为其二进制表示,对应原数组中的每个元素如果二进制位为1则将其放入子集合中(如000对应的子集合为[])。将每个编号原创 2015-11-16 16:39:16 · 371 阅读 · 0 评论 -
LeetCode---Combinations
题目大意:给出两个整数n和k,找出从1~n中包含k个数的所有组合。 算法思想: 1.计算出1~n个元素构成集合的所有子集合的个数subset_nums。 2.将每个子集合用0~subset_nums进行编号,将该编号表示成二进制形式。 3.找出出每个编号中二进制位数为1的个数等于k的编号。 4.然后遍历这些编号的二进制将对应位为1元素放入集合中。 5.将每个找出的子集合放入结果集中。原创 2015-11-17 11:39:35 · 267 阅读 · 0 评论