博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
47. Permutations II
阅读量:6868 次
发布时间:2019-06-26

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

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

Example:

Input: [1,1,2]Output:[  [1,1,2],  [1,2,1],  [2,1,1]]

难度:medium

题目:给定一组可能包含重复数的集合,返回所有可能的排列。

思路:先对数组进行排序,为去重做准备。然后借助递归遍历所有数。重点在于,当每次选定一个数做完交换之后,恢复时要对两个交换数及之间的所有数做排序。继续为接下来的去重做准备。

class Solution {    public List
> permuteUnique(int[] nums) { Arrays.sort(nums); List
> result = new ArrayList<>(); permuteUnique(nums, 0, new Stack
(), result); return result; } private void permuteUnique(int[] nums, int idx, Stack
stack, List
> result) { if (idx == nums.length) { result.add(new ArrayList<>(stack)); return; } for (int i = idx; i < nums.length; i++) { if (idx == i || nums[i] != nums[i - 1]) { stack.push(nums[i]); swap(nums, idx, i); permuteUnique(nums, idx + 1, stack, result); swap(nums, i, idx); Arrays.sort(nums, idx, i + 1); stack.pop(); } } } private void swap(int[] nums, int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; }}

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

你可能感兴趣的文章
TensorFlow基础笔记(11) max_pool2D函数
查看>>
vue2.0 自定义 饼状图 (Echarts)组件
查看>>
Uploadify404无效链接
查看>>
AngularJS------报错"The selector "app-user-item" did not match any elements"
查看>>
word中公式的排版及标题列表
查看>>
Android bitmap的六种压缩方式,Android图片压缩
查看>>
手动监控网络状态
查看>>
local_response_normalization 和 batch_normalization
查看>>
JDK1.8环境下依然报错 Unsupported major.minor version 52.0
查看>>
[Err] 1449 - The user specified as a definer ('rybhe'@'%') does not exist
查看>>
CSDN日报20170423 ——《私活,永远挽救不了自己屌丝的人生!》
查看>>
QGE 在齐次 Besov 空间中的准则
查看>>
遥感影像数据产品级别概述
查看>>
圆的内接三角形这样画最方便
查看>>
GoldenGate12.3中新增的Parallel Replicat (PR)介绍
查看>>
受限玻尔兹曼机——用在推荐系统里
查看>>
EBS已安装模块
查看>>
Android性能优化:布局优化 详细解析(含<include>、<ViewStub>、<merge>讲解 )
查看>>
UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
查看>>
Python import容易犯的一个错误
查看>>