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

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

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],  [2,1,1]]

题目和上一道很类似,区别在于,上一道题的数组中的数都是不一样的,这道题有一样的。

首先套用了上一道题的最佳解法,想了两个解决方案:(见上一题解答)

一、最后result.add时,判断result中是否存在,简单,但是耗时较多, 最终超时。

二、将数组排序,然后每次置换数字的时候,判断是否已经换过,但是这里就出现了一个问题,本来排序好的数组在判断的时候只需要判断前一位是否已经使用过就可以了,但是由于会将nums数组的数字换位置,导致了每次换位置都可能使得数组乱序,导致无法做出最终答案,最后已失败告终。

然后就使用递归,比较简单。耗时3ms。

public class Solution {    public List
> permuteUnique(int[] nums) { List
> result = new ArrayList
>(); if (nums.length == 0) return null; Arrays.sort(nums); getResult(result,nums,new ArrayList
(),0,new int[nums.length]); return result; } public static void getResult(List
> result,int[] nums,List
ans,int num,int[] pos){ if( num == nums.length){ result.add(new ArrayList
(ans)); return ; } for( int i = 0 ; i

 

 

 

 

 

转载于:https://www.cnblogs.com/xiaoba1203/p/5695642.html

你可能感兴趣的文章
迭代器
查看>>
elasticsearch type类型创建时注意项目,最新的elasticsearch已经不建议一个索引下多个type...
查看>>
jQury 跳出each循环的方法
查看>>
spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
查看>>
在编译安装程序时候遇到/usr/bin/ld: cannot find -lxxx的时候的解决办法。
查看>>
使用 INSERT 和 SELECT 子查询插入行
查看>>
shell脚本解析10(练习4)------监视文件
查看>>
Java对象引用
查看>>
linux虚拟环境搭建
查看>>
ubuntu重装mysql
查看>>
JS 学习笔记
查看>>
python 并发编程 多进程 守护进程
查看>>
Linux ag命令
查看>>
Keepalived
查看>>
js实现瀑布流布局
查看>>
C. Anagram codeforces
查看>>
找工作 做一些关于面试的笔记
查看>>
English trip -- VC(情景课)1 C What's your name?(review)
查看>>
redirect的错误用法asp.net怎么使用自定义错误
查看>>
在MyEclipse下统计工程的代码(package、行数、类个数)
查看>>