博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【一天一道LeetCode】#47. Permutations II
阅读量:4197 次
发布时间:2019-05-26

本文共 924 字,大约阅读时间需要 3 分钟。

一天一道LeetCode系列

(一)题目

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

For example,

[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].

(二)解题

求全排列数。具体思路可以参考这篇博客。

不同之处:上一题没有重复的数字,这一题有重复的数字

class Solution {public:    vector
> permute(vector
& nums) { vector
> ret; sort(nums.begin(),nums.end()); do{ ret.push_back(nums); }while(nextpermute(nums)); return ret; } bool nextpermute(vector
& nums) { int i = nums.size() -2; while(i>=0 && nums[i] >= nums[i+1]) i--;//考虑到有相等的情况,这里需要找到第一个破坏非降序的数 int j = nums.size()-1; while(j>=0 && nums[j] <= nums[i]) j--;//找到第一个大于i的数 if(i>=0) { swap(nums[i],nums[j]);//交换i和j reverse(nums.begin()+i+1,nums.end());//将i以后的数反转 return true;//如果还存在下一个全排列数就返回true } return false;//如果数组已经为倒序了就说明没有下一个了,返回false }};

转载地址:http://iayli.baihongyu.com/

你可能感兴趣的文章
同步与异步的区别
查看>>
IT行业--简历模板及就业秘籍
查看>>
JNI简介及实例
查看>>
DOM4J使用教程
查看>>
JAVA实现文件树
查看>>
Drools 规则引擎
查看>>
OLTP和OLAP区别
查看>>
JMeter最常用的三种类型的压力测试
查看>>
Hibernate HQL 语法大全(上)
查看>>
深入Java事务的原理与应用
查看>>
CSS单位和CSS默认值大全
查看>>
交大我来了--周末再见了
查看>>
网页中flash wmode属性
查看>>
挑战自我,勇攀高峰
查看>>
神奇的HTML5画图应用
查看>>
flex 滚动条问题
查看>>
软件开发管理中的博奕论
查看>>
计算机认证考试种类
查看>>
SQL in和exists 比较
查看>>
社会性网络服务(SNS)研究
查看>>