• 寻找“水王”


    设计思想:

    方法实现的前提:水王是数组中出现次数超过一半的数,所以水王-其他>0.
    通过对数组中的值两两比较,相同则count+1,不同count-1;默认a[1]是水王,当a[1]≠其他且count=0后,默认下一个数是水王。继续向下比较,最后剩下的就是水王。

    代码:

    public class shui {
         public static void main(String[] args) {
    
             int a[]= {2,1,1,1,3};
             int length=a.length;
             FindMostData(a, length);
        }
         public static void FindMostData(int a[], int length)
         {
             int sw = 0; // 出现次数超过一半的数;
             int count = 0; // 记录,用来判断一个数是否是水王;
             //方法能实现的前提:水王是数组中出现次数超过一半的数,所以水王-其他>0.
             //所以:两两比较,相同则count+1,不同count-1;默认a[1]是水王,当a[1]≠其他且count=0后,默认下一个数是水王。继续向下比较。
             for (int i = 0; i < length; i++)
             {
                 if (count == 0) // count为0时,表示当前的sw需要重选;
                 {
                     sw = a[i];
                     count = 1;
                 }
                 else
                 {
                     if (sw == a[i])
                         count++; //+1保证水王不变。
                     else
                         count--; //-1为了找到真正的水王。
                 }
             }
    
             System.out.println(sw); //输出水王。
         }
    
    }

    截图:

    个人总结:一直没有想出最优解,虽然想到了几点,但是没有把他们结合起来,逻辑思想有待大幅度提高,思想不够全面。

  • 相关阅读:
    集合set() 和 深浅copy
    Python 数据类型的操作——字典
    Python()- 面向对象
    面向对象的软件开发
    Python数据类型的操作——列表、元组
    Python 数据类型的操作——字符串
    Linux下386中断处理
    任务的休眠与唤醒
    Linux下SIGSTOP的特殊特征和实现
    内核线程对信号的处理策略
  • 原文地址:https://www.cnblogs.com/sljslj/p/10963318.html
Copyright © 2020-2023  润新知