zoukankan      html  css  js  c++  java
  • 寻找“水王”

    设计思想:

    方法实现的前提:水王是数组中出现次数超过一半的数,所以水王-其他>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); //输出水王。
         }
    
    }

    截图:

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

  • 相关阅读:
    java后端解决请求跨域
    在IDEA中找不到Mapper报错
    ES6拼接数组与小程序本地存储
    小程序云开发实现微信发说说
    SQLServer的操作以及一些概念
    数据依赖(决定),码,范式,规范化与反规范化
    Git的使用上传与下载github
    JS中Map和ForEach的区别
    进入React的世界
    Node的重要性
  • 原文地址:https://www.cnblogs.com/sljslj/p/10963318.html
Copyright © 2011-2022 走看看