admin管理员组文章数量:1446760
输入一个数组,输出数组的不同顺序组合,该组合是唯一的。思路和编码如下。
代码语言:java复制package com.javaTest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Random;
import java.util.UUID;
public class JavaTest {
public static void main(String[] args) {
System.out.println("Hello World!");
int[] nums=new int[] {1,2,3,4,5};
List<ArrayList<CustIntGroup>> diffGroupIntegerList = getDiffGroupIntegerList(nums);
System.out.println(diffGroupIntegerList);
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(2);
Boolean checkIntArrEleIsUnique = checkIntArrEleIsUnique(arrayList);
System.out.println(checkIntArrEleIsUnique);
}
public static List<ArrayList<CustIntGroup>> getDiffGroupIntegerList(int[] nums){
if(nums==null) {
return null;
}
if(nums.length==0) {
return null;
}
if(nums.length<1 || nums.length>6) {
return null;
}
HashSet<Integer> hashSet = new HashSet<Integer>();
for (int i = 0; i < nums.length; i++) {
int j = nums[i];
if(j<0 || j>10) {
return null;
}
hashSet.add(j);
}
if(hashSet.size()<nums.length) {
return null;
}
List<ArrayList<CustIntGroup>> arrayList = new ArrayList<ArrayList<CustIntGroup>>();
Random random = new Random();
HashSet<CustIntGroup> hashSet2 = new HashSet<CustIntGroup>();
int count=0;
while(true) {
ArrayList<Integer> arrayList3 = new ArrayList<Integer>();
for (int j = 0; j < nums.length; j++) {
CustIntGroup custIntGroup = new CustIntGroup();
custIntGroup.setId(UUID.randomUUID().toString());
int nextInt = random.nextInt(nums.length);
int i = nums[nextInt];
arrayList3.add(i);
if(arrayList3.size()<nums.length) {
continue;
}
if(checkIntArrEleIsUnique(arrayList3)) {
custIntGroup.setIntArr(arrayList3);
}
hashSet2.add(custIntGroup);
}
ArrayList<CustIntGroup> arrayList2 = new ArrayList<CustIntGroup>();
hashSet2.forEach(e->{
arrayList2.add(e);
});
arrayList.add(arrayList2);
count++;
if(count>1000000) {
break;
}
}
return arrayList;
}
public static Boolean checkIntArrEleIsUnique(List<Integer> intList) {
if(intList==null) {
return null;
}
if(intList.isEmpty()) {
return null;
}
HashSet<Integer> hashSet = new HashSet<Integer>();
intList.forEach(e->{
hashSet.add(e);
});
if(hashSet.size()<intList.size()) {
return false;
}
return true;
}
}
class CustIntGroup{
private String id;
private List<Integer> intArr;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<Integer> getIntArr() {
return intArr;
}
public void setIntArr(List<Integer> intArr) {
this.intArr = intArr;
}
@Override
public int hashCode() {
return Objects.hash(intArr);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CustIntGroup other = (CustIntGroup) obj;
return Objects.equals(intArr, other.intArr);
}
}
本文标签: 输入一个数组,输出数组的不同顺序组合,该组合是唯一的思路和编码如下
版权声明:本文标题:输入一个数组,输出数组的不同顺序组合,该组合是唯一的。思路和编码如下。 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748246530a2831847.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论