首页 > 其他 > 详细

查找数组中数量过半元素

时间:2014-03-07 16:46:35      阅读:580      评论:0      收藏:0      [点我收藏+]

1.编程之美中发帖问题

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

例如:4 4 1 2 4 3 4

过半元素为4;

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

bubuko.com,布布扣
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);
            }
        }
    }
}
bubuko.com,布布扣

查找数组中数量过半元素,布布扣,bubuko.com

查找数组中数量过半元素

原文:http://www.cnblogs.com/csxf/p/3584691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!