【每日打卡】Day1:全排列的C++实现
2019-04-09 23:20
141 查看
题目来源:Leetcode
[code]//不含重复元素 class Solution { public: vector<vector<int>> all; void swap(vector<int> &nums, int p, int q){ int t = nums.at(p); nums.at(p) = nums.at(q); nums.at(q) = t; } void allsort(vector<int> &nums, int p, int q){ if(p == q){ all.push_back(nums); } else{ for(int i = p-1; i >= q; i --){ swap(nums,p-1,i); allsort(nums,p-1,q); swap(nums,p-1,i); } } } vector<vector<int>> permute(vector<int>& nums) { allsort(nums,nums.size(),0); return all; } };
[code]//含重复元素 class Solution { public: vector<vector<int>> all; bool flag(vector<int> &nums, int p, int q){ bool yes = true; for(int i = p; i < q; i ++){ if(nums.at(i) == nums.at(q)){ yes = false; break; } } return yes; } void swap(vector<int> &nums, int p, int q){ int t = nums.at(p); nums.at(p) = nums.at(q); nums.at(q) = t; } void allsort(vector<int> &nums, int p, int q){ if(p == q){ all.push_back(nums); } else{ for(int i = p; i < q; i ++){ if(flag(nums,p,i)){ swap(nums,p,i); allsort(nums,p+1,q); swap(nums,p,i); } } } } vector<vector<int>> permuteUnique(vector<int>& nums) { allsort(nums,0,nums.size()); return all; } };
相关文章推荐
- 【每日打卡】Day4:矩阵中的路径 C++实现
- 【每日打卡】Day11:第十届蓝桥杯 不同子串 C++实现
- 【每日打卡】Day6:01背包问题 C++实现
- 【每日打卡】Day27:三数之和 C++实现
- 【每日打卡】Day28:最接近的三数之和 C++实现
- 【每日打卡】Day7:完全背包问题 C++实现
- 【每日打卡】Day24:下一个排列 C++实现
- 【每日打卡】Day21:单词搜索 C++实现
- 【每日打卡】Day26:较大分组的位置 C++实现
- 【每日打卡】Day25:字串非重复字符数排序 C++实现
- 【每日打卡】Day12:机器人的运动范围 C++实现
- 【每日打卡】Day10:第十届蓝桥杯 迷宫 C++实现
- 【每日打卡】Day17:青蛙的约会 C++实现
- C++调用Java(借助JNI技术实现每日登陆的实现)
- C++ 实现"1234567"的全排列
- C++递归实现全排列
- 全排列(C++实现)
- C++ 实现"1234567"的全排列
- 每日进步之leetcode15题C++实现代码
- 基于JavaScript实现每日签到打卡轨迹功能