统计打破得分记录的次数以及打破得分记录的状态是最低的得分记录打破还是最高的得分记录打破

    /**
     * 统计打破得分记录的次数以及打破得分记录的状态是最低的得分记录打破还是最高的得分记录打破
     * @param scores
     * @return
     */
    public static List<Integer> breakingRecords(List<Integer> scores){
        if(scores==null){
            return null;
        }
        if (scores.isEmpty()){
            return null;
        }
        if (scores.size()==1){
            return null;
        }
        if (scores.size() < 1 || scores.size()>1000) {
            return null;
        }
        int val=1;
        for (int i = 0; i < 8; i++) {
            val*=10;
        }
        for (Integer score : scores) {
            if (score<0 || score>val){
                return null;
            }
        }
        ArrayList<CustomerScoreDef> customerScoreDefs = new ArrayList<>();
        int count=scores.size();
        while (count>0){
            Integer  inicializeUplayScore= scores.get(1);
            scores.sort(new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    if (o1>o2){
                        return 1;
                    } else if (o1<o2) {
                        return -1;
                    }
                    return 0;
                }
            });
            Integer maxScore = scores.get(0);
            Integer minScore = scores.get(scores.size() - 1);
            if (inicializeUplayScore>maxScore){
                CustomerScoreDef customerScoreDef = new CustomerScoreDef();
                customerScoreDef.setId(UUID.randomUUID().toString());
                customerScoreDef.setBreakScoreFrequence(1);
                customerScoreDef.setGMaxUpLayerScore(true);
                customerScoreDefs.add(customerScoreDef);
            }else if(inicializeUplayScore<minScore){
                CustomerScoreDef customerScoreDef = new CustomerScoreDef();
                customerScoreDef.setId(UUID.randomUUID().toString());
                customerScoreDef.setLMinLowLayerScore(true);
                customerScoreDef.setBreakScoreFrequence(1);
                customerScoreDefs.add(customerScoreDef);
            }else {
                CustomerScoreDef customerScoreDef = new CustomerScoreDef();
                customerScoreDef.setId(UUID.randomUUID().toString());
                customerScoreDef.setBreakScoreFrequence(0);
                customerScoreDef.setGMaxUpLayerScore(false);
                customerScoreDef.setLMinLowLayerScore(false);
                customerScoreDefs.add(customerScoreDef);
            }
            count--;
        }
        HashMap<String, Integer> integerIntegerHashMap = new HashMap<>();
        customerScoreDefs.forEach(e->{
            Integer breakScoreFrequence = e.getBreakScoreFrequence();
            if (breakScoreFrequence==1){
                if (integerIntegerHashMap.get("maxUpLayer1")>=1){
                    integerIntegerHashMap.put("maxUpLayer1",integerIntegerHashMap.get(e.getBreakScoreFrequence())+1);
                }else if (integerIntegerHashMap.get("maxUpLayer1")<1){
                    integerIntegerHashMap.put("maxUplayer1",1);
                } else if (integerIntegerHashMap.get("minLowLayer1")>=1) {
                    integerIntegerHashMap.put("minLowLayer1",integerIntegerHashMap.get("minLowLayer1")+1);
                } else if (integerIntegerHashMap.get("minLowLayer1")<1) {
                    integerIntegerHashMap.put("minLowLayer1",1);
                }
            }
        });
        ArrayList<CustRetResult> custRetResults = new ArrayList<>();
        int breakRecoredTimes=0;
        for (Map.Entry<String,Integer> entry : integerIntegerHashMap.entrySet()) {
            CustRetResult custRetResult = new CustRetResult();
            custRetResult.setId(UUID.randomUUID().toString());
            breakRecoredTimes += entry.getValue();
            custRetResult.setBreakScoreRecoredTimes(breakRecoredTimes);
            if("maxUpLayer1".equals(entry.getKey())){
                custRetResult.setIsBreakMaxUpLayerScoreOrNot(0);
            } else if ("minLowLayer1".equals(entry.getKey())) {
                custRetResult.setIsBreakMaxUpLayerScoreOrNot(1);
            }
            custRetResults.add(custRetResult);
        }
        ArrayList<Integer> integers = new ArrayList<>();
        Random random = new Random();
        int i = random.nextInt(custRetResults.size());
        CustRetResult custRetResult = custRetResults.get(i);
        integers.add(custRetResult.getBreakScoreRecoredTimes());
        integers.add(custRetResult.getIsBreakMaxUpLayerScoreOrNot());
        return integers;
    }
class CustRetResult{
    private String id;
    private Integer breakScoreRecoredTimes;
    private Integer isBreakMaxUpLayerScoreOrNot; // 打破最高记录初始化 0,打破最低记录初始化 1
    public String getId() {
        return id;
    }

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

    public Integer getBreakScoreRecoredTimes() {
        return breakScoreRecoredTimes;
    }

    public void setBreakScoreRecoredTimes(Integer breakScoreRecoredTimes) {
        this.breakScoreRecoredTimes = breakScoreRecoredTimes;
    }

    public Integer getIsBreakMaxUpLayerScoreOrNot() {
        return isBreakMaxUpLayerScoreOrNot;
    }

    public void setIsBreakMaxUpLayerScoreOrNot(Integer isBreakMaxUpLayerScoreOrNot) {
        this.isBreakMaxUpLayerScoreOrNot = isBreakMaxUpLayerScoreOrNot;
    }
}
class CustomerScoreDef{
    private String id;
    private Boolean isGMaxUpLayerScore;
    private Boolean isLMinLowLayerScore;
    private Integer breakScoreFrequence;

    public String getId() {
        return id;
    }

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

    public Boolean getGMaxUpLayerScore() {
        return isGMaxUpLayerScore;
    }

    public void setGMaxUpLayerScore(Boolean GMaxUpLayerScore) {
        isGMaxUpLayerScore = GMaxUpLayerScore;
    }

    public Boolean getLMinLowLayerScore() {
        return isLMinLowLayerScore;
    }

    public void setLMinLowLayerScore(Boolean LMinLowLayerScore) {
        isLMinLowLayerScore = LMinLowLayerScore;
    }

    public Integer getBreakScoreFrequence() {
        return breakScoreFrequence;
    }

    public void setBreakScoreFrequence(Integer breakScoreFrequence) {
        this.breakScoreFrequence = breakScoreFrequence;
    }
}

#你觉得材料专业有必要实习嘛##找工作有哪些冷知识##应届生应该先就业还是先择业#
Java技术 文章被收录于专栏

JavaEE技术 编程开发经验 企业通用技术

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务