zoukankan      html  css  js  c++  java
  • 查找数组中数量过半元素

    1.编程之美中发帖问题

    如何在O(n)时间内找到发帖过半的人,或者在一个数组中找到数量过半的元素

    例如:4 4 1 2 4 3 4

    过半元素为4;

    该算法必须在保证有过半元素的情况下,才能找到所需元素;否者。。。

    import java.util.Scanner;
    /**
     * 查找数组中数量过半的元素
     * @author dell
     *
     */
    public class Main10 {
    
        private boolean flag=true;
        
        private int findHalfMaxValue(int[] numb){
            int length=numb.length;
            int nTimes,i,value=0;
            for(i=nTimes=0;i<length;i++){
                if(nTimes==0){
                    value=numb[i];
                    nTimes++;
                }else{
                    if(numb[i]==value)
                        nTimes++;
                    else
                        nTimes--;
                }
            }
            return value;
        }
        public static void main(String[] args){
            Main10 main10=new Main10();
            //测试数据4 4 1 2 4 3 4
            System.out.println("开始。。。");
            Scanner scanner=new Scanner(System.in);
            int n;//数组长度
            int[] numb;
            while(scanner.hasNext()){
                n=scanner.nextInt();
                if(n<=0){
                    System.out.println("输入N不合法,默认值为10");
                    n=10;
                }else{
                    numb=new int[n];
                    for(int i=0;i<n;i++){
                        System.out.println("输入元素");
                        numb[i]=scanner.nextInt();
                    }
                    int value=main10.findHalfMaxValue(numb);
                    System.out.println("过半元素为:"+value);
                }
            }
        }
    }
  • 相关阅读:
    django基础之ORM基础知识
    Centos7 搭建sonarQube
    centos7安装部署SVN
    centos7.5 SVN 搭建
    centos 7 部署 zookeeper
    centos7 发送邮件
    Centos7安装配置Gitlab-CE
    openldap 双主模式部署
    K8s一键安装
    ELK实战部署
  • 原文地址:https://www.cnblogs.com/csxf/p/3584691.html
Copyright © 2011-2022 走看看