/**
* migratoryBirds
* output int arr element that occus frequence is most high and rank at the lowest down layer
* constriants:
* arrList numberSize: 5<=n<=2*10to5
* it is guaranteed that each arr element is 1,2,3,4,5
* @param arr
* @return
*/
public static int migratoryBirds(List<Integer> arr){
if (arr==null){
return 0;
}
if (arr.isEmpty()){
return 0;
}
int targetSize=1;
for (int i = 0; i < 5; i++) {
targetSize*=10;
}
if (arr.size()<5 || arr.size()>targetSize){
return 0;
}
ArrayList<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(2);
integers.add(3);
integers.add(4);
integers.add(5);
for (Integer integer : arr) {
if (!(integers.contains(integer))){
return 0;
}
}
HashMap<Integer, Integer> integerIntegerHashMap = new HashMap<>();
for (Integer integer : arr) {
if (integerIntegerHashMap.containsKey(integer)){
integerIntegerHashMap.put(integer,integerIntegerHashMap.get(integer)+1);
}else {
integerIntegerHashMap.put(integer,1);
}
}
ArrayList<CustomerIntStatistic> customerIntStatistics = new ArrayList<>();
integerIntegerHashMap.forEach((k,v)->{
CustomerIntStatistic customerIntStatistic = new CustomerIntStatistic();
customerIntStatistic.setId(UUID.randomUUID().toString());
customerIntStatistic.setArrIntEle(k);
customerIntStatistic.setArrIntEleOccusFrequence(v);
customerIntStatistics.add(customerIntStatistic);
});
Collections.sort(customerIntStatistics, new Comparator<CustomerIntStatistic>() {
@Override
public int compare(CustomerIntStatistic o1, CustomerIntStatistic o2) {
if (o1.getArrIntEleOccusFrequence()>o2.getArrIntEleOccusFrequence()){
return 1;
} else if (o1.getArrIntEleOccusFrequence()<o2.getArrIntEleOccusFrequence()) {
return -1;
} else if (o1.getArrIntEleOccusFrequence()==o2.getArrIntEleOccusFrequence()) {
if (o1.getArrIntEle()<o2.getArrIntEle()){
return 1;
} else if (o1.getArrIntEle()>o2.getArrIntEle()) {
return -1;
}
}
return 0;
}
});
return customerIntStatistics.get(customerIntStatistics.size()-1).getArrIntEle();
}

class CustomerIntStatistic{
private String id;
private Integer arrIntEle;
private Integer arrIntEleOccusFrequence;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public Integer getArrIntEle() {
return arrIntEle;
}

public void setArrIntEle(Integer arrIntEle) {
this.arrIntEle = arrIntEle;
}

public Integer getArrIntEleOccusFrequence() {
return arrIntEleOccusFrequence;
}

public void setArrIntEleOccusFrequence(Integer arrIntEleOccusFrequence) {
this.arrIntEleOccusFrequence = arrIntEleOccusFrequence;
}

@Override
public String toString() {
return "CustomerIntStatistic{" +
"id='" + id + '\'' +
", arrIntEle=" + arrIntEle +
", arrIntEleOccusFrequence=" + arrIntEleOccusFrequence +
'}';
}
}
posted on 2025-05-31 11:40  CoderOilStation  阅读(11)  评论(0)    收藏  举报