I feel my algorithm is just a standard one as others provided, but why it is TLE? Thanks.

```
class Solution {
public:
vector<vector<int> > combinationSum2(vector<int> &num, int target) {
vector<vector<int>> vecs;
if(num.empty()) {
return vecs;
}
sort(num.begin(), num.end());//ifmissing this, TLE
vector<int> vec;
helper(num, target, vecs, vec, 0);
return vecs;
}
void helper(vector<int> &num, int target, vector<vector<int>> vecs, vector<int> &vec, int index) {
if(target ==0) {
vecs.push_back(vec);
} else if(target<0) {
return;
} else {
for(int i=index; i<num.size()&&target-num[index]>=0; ++i) {
if(i>index&&num[i]==num[i-1]) {
continue;
}
vec.push_back(num[index]);
helper(num, target-num[index], vecs, vec, index+1);
vec.pop_back();
}
}
}
};
```