• 找水王


    题目描述

    设计思想

    若要统计所有数字的出现次数,则水王的出现次数减去其余数字的次数所得的结果大于0,因此我们可以将统计所有数字出现次数转变为统计每个数字出现次数与其余数字出现次数之差。具体的实现方式是从头开始将第一数设置为候选数,出现次数为1,将其与相邻的下一个数作比较,若相等则次数加一否则减一,若此时该候选数的次数被减为0则将下一个数作为候选数重复此步骤,最终剩下的即为水王。其中有一种极端情况是水王的出现次数占一半且将其余数字依次隔开,此时按照上述算法则没有结果,此时水王出现在最后一位,只需要额外统计最后一位的出现次数将其与全长的一半比较即可,若刚好为一半则确定为水王。

    package findWaterKing;
    
    public class findWaterKing {
        public static void main(String[] args) {
            find(new int[]{1,6,2,6,3,6,4,6,5,6});
        }
    
        private static void find(int[] is) {
            int candidate=is[0];
            int times=0;
            int count=0;
            for (int i = 0; i < is.length; i++) {
                if (is[i] == is[is.length-1]) {
                    count++;
                }
                if (times == 0) {
                    candidate = is[i];
                    times = 1;
                    continue;
                }
                if (is[i] == candidate) {
                    times++;
                } else {
                    times--;
                }
            }
            if (count == is.length/2) {
                System.out.println(is[is.length-1]);
            } else {
                System.out.println(candidate);
            }
        }
    }

    结果截图:

  • 相关阅读:
    python接口自动化问题解决
    python+selenium之测试报告自动化测试实例
    python+selenium之邮件发送
    python+selenium之测试报告
    Python自动发动邮件
    安卓下H5弹窗display:table的bug
    IOS中position:fixed弹出框中的input出现光标错位的问题
    display:table-cell的应用
    :after伪类+content经典应用举例
    不同CSS技术及其CSS性能
  • 原文地址:https://www.cnblogs.com/yangqqq/p/13071731.html
Copyright © 2020-2023  润新知