zoukankan      html  css  js  c++  java
  • 找水王 多个水王

      这个找多个水王的问题我想了比较长的时间。让我有两个地方比较难想。因为我们是要用到前一个问题的思路,所以还是采用那种消除的方法来解决。这次水王有多个,想用以前的方法,需要把三个水王看成一个整体。遍历数组时只要当前元素和水王数组中的任何一个元素相同,相应的计数变量增加1。如果没有一个相同,计数变量都要减1。z这两个方面保证了三个水王是一个整体。难理解的是元素和水王数组中的任何一个都不相同的时候,水王数组的计数变量都要减1。代码是我看了别人的又重新写的。

    package Arraysum;
    
    public class FindWaterKing {
        public static void main(String[] args)
        {
            //把id列表放到一个数组里面
            int[] idNum = {1,8,1,6,9,6,7,6,6,1,5,5,1,7,6,5,5,6,5,5,1,1,6};
            //水王数组
            int[] waterKing = new int[3];
            //水王数组数量的数组
            int[] wkNum = new int[3];
            //初始化水王数组和水王数量数组
            for(int i = 0;i < 3;i++)
            {
                waterKing[i] = -1;
                wkNum[i] = 0;
            }
            //查找三个水王的循环
            for(int i = 0;i < idNum.length;i++)
            {
                //先检查一下当前水王数量数组中那个元素为0那个元素为0就把那个元素对应的水王值为当前idNum数组中的元素
                    if(wkNum[0] == 0)
                    {
                        waterKing[0] = idNum[i];
                        wkNum[0] = wkNum[0] + 1;
                    }
                    else if(wkNum[1] == 0)
                    {
                        waterKing[1] = idNum[i];
                        wkNum[1] = wkNum[1] + 1;
                    }
                    else if(wkNum[2] == 0)
                    {
                        waterKing[2] = idNum[i];
                        wkNum[2] = wkNum[2] + 1;
                    }
                    else if(idNum[i] == waterKing[0])
                    {
                        wkNum[0] = wkNum[0] + 1;
                    }
                    else if(idNum[i] == waterKing[1])
                    {
                        wkNum[1] = wkNum[1] + 1;
                    }
                    else if(idNum[i] == waterKing[2])
                    {
                        wkNum[2] = wkNum[2] + 1;
                    }
                    else
                    {
                        wkNum[0] = wkNum[0] - 1;
                        wkNum[1] = wkNum[1] - 1;
                        wkNum[2] = wkNum[2] - 1;
                    }
            }
            System.out.println("水王是:");
            System.out.println(waterKing[0]+" "+waterKing[1]+" "+waterKing[2]);
            
        }
    
    }
  • 相关阅读:
    [Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
    Flink -- Barrier
    深入理解Flink ---- End-to-End Exactly-Once语义
    深入理解Flink ---- 系统内部消息传递的exactly once语义
    flink watermark介绍
    flink中对于window和watermark的一些理解
    Apache Flink:详细入门
    flink学习之十一-window&EventTime实例
    Lambda语法
    String s = “1a2a3a4a” 解码为 “1234”
  • 原文地址:https://www.cnblogs.com/1102whw/p/5528464.html
Copyright © 2011-2022 走看看