問題描述:
given a set of distinct integers, nums, return all possible subsets.
note: the solution set must not contain duplicate subsets.
for example,
if nums = [1,2,3], a solution is:
[[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
]解題思路
方法1:backtracing
回溯法的思路是,逐個掃瞄nums中的元素,每掃瞄乙個將該元素加入子集中,處理下乙個字元。
class solution
void subsetsrec(vector& nums, vector> & res, vector& sub_set, int i)
}}
方法2:逐步新增數字
仔細觀察一下,當nums中沒有元素的時候,subset集合為:;
新增乙個元素a1,subset集合為:,[a1];
新增元素a2,subset集合為:,[a1],[a2],[a1,a2];
新增元素a3,subset集合為:,[a1][a2][a1,a2],[a3],[a1,a3],[a2,a3],[a1,a2,a3];
可以看出每新增乙個元素,subset集合中就是把前乙個subset集合中的元素複製乙份然後在後面新增該新加的元素。
**如下:
class solution
}return rtn;
}}
方法3:位元組
在nums中選取subset集合相當於對每乙個元素進行取捨,每乙個元素都有選、不選兩種選擇。所以個nums的subset集合有2^n個,n是nums的元素個數。所以這相當於對n位二進位制表示,1表示選擇這個數,0表示不選這個數。
**如下:
class solution
return rtn;
}vectorgetsubset(vector&nums,int n)
return rtn;
}};
Subsets 系列 Leetcode解題記錄
寫這個系列是因為紀念一下去年的今天,就是2015年的9月14號,刷題第一天,今天是一週年紀念日。當時只敢做easy還得抄答案的我想啥時候能做上medium啊,事到如今,感覺都不是啥障礙了,這道題也已經做了第四遍了,抽出來的dfs遞迴模板放在這裡總結一下。這題內容就是就是給個陣列,裡面的數字都是獨一無...
解題報告1
這個暑假我的同學們正在做usaco上的訓練題目。要求他們對所完成的題目寫解題報告?看了幾篇之後,發現解題報告多為上載的解題 以及簡述的解題思路。我在想解題報告就應該是這樣的嗎?我從來沒有寫過解題報告。為什麼要寫解題報告?解題報告應該怎樣寫?1.為什麼要學習寫解題報告?大家知道 n 項平方和的公式 1...
賽碼解題報告(1)
題目描述 果園裡有堆蘋果,n 1 n 9 只熊來分。第一隻熊把這堆蘋果平均分為n份,多了乙個,它把多的乙個扔了,拿走了乙份。第二隻熊把剩下的蘋果又平均分成n份,又多了乙個,它同樣把多的乙個扔了,拿走了乙份,第 三 第四直到第n隻熊都是這麼做的,問果園裡原來最少有多少個蘋果?輸入輸入1個整數,表示熊的...