代码随想录打卡第25天 | 491. 递增子序列、46. 全排列、47. 全排列II、51. N皇后、37. 解数独
491. 递增子序列 链接:491. 递增子序列 文章:代码随想录 视频:B站讲解 状态:❌ 第一想法 这题不能排序,同层去重又不会了; 看完题解后的想法 使用 set 记录本层使用过的数据,这是更加一般的同层去重; 实现中遇到的困难 不会非排序的同层去重; 代码 class Solution { public: vector<vector<int>> res; vector<int> path; void backtracking(vector<int>& nums, int index) { if (path.size() >= 2) { res.push_back(path); } unordered_set<int> used; // 每层一个,记录本层用过的值 for (int i = index; i < nums.size(); i++) { if ((!path.empty() && nums[i] < path.back()) || used.count(nums[i])) { continue; } used.insert(nums[i]); // 注意退栈不用 erase,因为还在当前层 path.push_back(nums[i]); backtracking(nums, i+1); path.pop_back(); } } vector<vector<int>> findSubsequences(vector<int>& nums) { backtracking(nums, 0); return res; } }; 46. 全排列 链接:46. 全排列 文章:代码随想录 视频:B站讲解 状态:✅ 第一想法 排列不需要传入 index,因为每次都是从头访问; ...