Given a collection of numbers, return all possible permutations.
For example,[1,2,3]Have the following permutations:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], And[3,2,1].
Class solution {public: vector <int> permute (vector <int> & num) {vector <int> Te; vector <int> res, temp; // store the Intermediate Value int Len = num in temp. size (); If (LEN <= 0) return res; For (INT I = 0; I <Len; I ++) {Te. push_back (Num [I]); temp. push_back (TE); Te. clear ();} // end for while (! Temp. empty () {Te = temp. back (); temp. pop_back (); If (Te. size () = Len) {res. push_back (TE); continue;} For (INT I = 0; I <Len; I ++) {If (find (Te. begin (), te. end (), num [I]) = tE. end () {Te. push_back (Num [I]); temp. push_back (TE); Te. pop_back () ;}}// end while return res ;}};
It is still the previous stack idea, but it is also good to use vector.