首页 > 其他 > 详细

课堂练习&课下作业

时间:2016-05-20 09:52:02      阅读:79      评论:0      收藏:0      [点我收藏+]

设计思路:

将数组排序,最中间的那个数就是您要找的数。如果出现最多的那个数是最小的,那么1至(n+1)/2都是那个数。如果出现最多的那个数是最大的,那么(n-1)/2至n都是那个数。如果不是最小也不是最大中间的数也肯定是出现最多的那个。

源代码:

import java.util.Arrays;

public class Water {
    public static void main(String arg[])
    {
        int array[] = {3,1,3,1,5,6,3,3,3,3};
        
        Arrays.sort(array);
        
        int n = (array.length + 1) / 2;
        
        System.out.println("数组中超过一半的数是:"+array[n]);
    }
}

结果截图:

技术分享

个人总结:

我能想到的也就三个方法了。一个是上面这个排序的,一个是两数比较,不同就消去两个,相同就进行下一项比较,还有一个就是最蠢的记录每个数出现的次数。然而我感觉不管用什么方法,都需要遍历一次数组,并没有哪种方法更快更简单,所以就选择了排序的方法做了。

课堂练习&课下作业

原文:http://www.cnblogs.com/wxyxxx/p/5511008.html

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