首页 > 其他分享 >力扣-47-全排列Ⅱ

力扣-47-全排列Ⅱ

时间:2022-12-09 12:56:27浏览次数:33  
标签:排列 nums int 47 元素 力扣 vector ans left

好像相对于全排列唯一的不同就是包含了重复元素,这样的话会与原题有什么区别呢?
明明每次都选择了不同的元素,但是因为有元素相同,所以最终的结果却出现了重复值
然后因为这里是在意序列顺序、定长的,所以不能像之前做组合一样,直接从后面选、或者排序再从后面选什么的

这里用排序+交换?我尝试这么写了,但是很明显就出问题了,这俩不能同时用,因为交换会破坏原本的有序序列

用交换的本意是省去对于已经选择元素的标记

class Solution {
    vector<vector<int>> ans;

public:
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        perm(nums, 0, nums.size() - 1);
        return ans;
    }
    
    void perm(vector<int> nums, int left, int right) {
        if (left == right)
            ans.push_back(nums);
        else {
            for (int i = left; i <= right; i++) {
                if (i != left && nums[left] == nums[i]) continue;  # 去重
                swap(nums[left], nums[i]);
                perm(nums, left + 1, right);
            }
        }
    }
};

这是别人的答案,我看不明白
我甚至不确定这还是不是回溯

标签:排列,nums,int,47,元素,力扣,vector,ans,left
From: https://www.cnblogs.com/yaocy/p/16968617.html

相关文章

  • Visual AssistX (x64) Version 10.9.2471 Cracked
    任何问题请反馈至邮箱:[email protected](随缘查看邮件)Anyporbs->[email protected]随番茄主版本更新,使用中有任何问题请反馈至邮箱说明1......
  • 力扣每日一题2022.12.8---1812. 判断国际象棋棋盘中一个格子的颜色
    给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 ......
  • 力扣每日一题2022.12.9---1780. 判断一个数字是否可以表示成三的幂的和
    给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回false 。对于一个整数y ,如果存在整数x 满足y==3x ,我们称这个整数......
  • 回溯算法_全排列
    '给定一个没有重复数字的序列,返回其所有可能的全排列。'示例:'输入:[1,2,3]'输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]PublicpathAsNe......
  • 力扣-216-组合总和Ⅲ
    仍旧是有一个目标和,但是另一个条件变了从给定的数组元素中选择变成了从1-9中固定选择不限结果数组元素个数变成了限制k个数字(看起来有点像组合的加强版)从1-9中选择k......
  • 力扣-40-组合总和Ⅱ
    复习下原题,之前做过的,4个月前了第一眼看到觉得是完全背包,但是好像不太一样然后想到了回溯我很快写了一个标准的回溯出来,但是意识到好像不太对classSolution{public:......
  • 力扣 leetcode 40. 组合总和 II
    问题描述给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使......
  • 力扣 leetcode 39. 组合总和
    问题描述给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可......
  • 47个过程
    项目管理过程知识领域过程组含义之前应完成之后要进行制定项目章程整合启动编写一份正式批准项目并授权项目经理使用组织资源的文件的过程无制定项目管理计划制定项目管理计......
  • 力扣14 寻找字符串数组中最长公共前缀
    力扣14寻找字符串数组中最长公共前缀题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入:strs=["flower","flow",......