当前位置 : 主页 > 网络编程 > 其它编程 >

47.全排列II(回溯)

来源:互联网 收集:自由互联 发布时间:2023-07-02
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]思路:在全排列I的基础上,加上去重即可怎么去 给定一个可包含重复数字的序列,
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]思路:在全排列I的基础上,加上去重即可怎么去

给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]

思路:在全排列I的基础上,加上去重即可

怎么去重:先把数组进行排序,然后在放到临时数组时,如果数组的前一个数和当前数一样且前一个数还没放过,则跳过这个数的放入

效率:30.18%

class Solution {public: int nums_size; vector res; vector temp; vector is_visit; void put_in(vector } else { for (int i = 0; i 0 is_visit[i] = true; temp.push_back(nums[i]); put_in(nums); temp.pop_back(); is_visit[i] = false; } } } } vector permuteUnique(vector nums_size = nums.size(); is_visit.resize(nums_size, false); put_in(nums); return res; }};

 

上一篇:mysql数据库查询教程_MySQL查询数据
下一篇:没有了
网友评论