输入一个数组,输出数组的不同顺序组合,该组合是唯一的。思路和编码如下。
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); } }#初创公司值得加入吗?##技术岗笔试题求解##牛客创作赏金赛#
Java技术 文章被收录于专栏
JavaEE技术 编程开发经验 企业通用技术