您的位置:首页 > 其它

leetcode:Subsets

2015-04-10 22:56 302 查看
Given a set of distinct integers, S, return all possible subsets.
Note:

Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.

For example,

If S =
[1,2,3]
, a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]


Show Tags

Have you met this question in a real interview?
Yes

No

Discuss

int getLastLetterIndex(vector<int> &S, vector<int> &curVector)
{
int lastIndex = -1;
if (curVector.size() == 0)
return lastIndex;

int lastLetter = curVector.at(curVector.size()-1);

for (int i=0; i<S.size(); i++)
{
if (S.at(i) == lastLetter)
{
lastIndex = i;
break;
}
}

return lastIndex;
}

vector<vector<int> > subsets(vector<int> &S) {

sort(S.begin(), S.end());

vector<vector<int> > retVector;
vector<int> curVector;

retVector.push_back(curVector);

int curIdx = 0;
while (curIdx != retVector.size())
{
vector<int> curVector = retVector[curIdx];

int loopIdx = getLastLetterIndex(S, curVector);

for(int i=loopIdx+1; i<S.size(); i++)
{
vector<int> newVector = curVector;
newVector.push_back(S.at(i));

//print (newVector);
retVector.push_back(newVector);
}

curIdx++;
}

return retVector;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: