设计思路:
将数组排序,最中间的那个数就是您要找的数。如果出现最多的那个数是最小的,那么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]); } }
结果截图:
个人总结:
我能想到的也就三个方法了。一个是上面这个排序的,一个是两数比较,不同就消去两个,相同就进行下一项比较,还有一个就是最蠢的记录每个数出现的次数。然而我感觉不管用什么方法,都需要遍历一次数组,并没有哪种方法更快更简单,所以就选择了排序的方法做了。
时间: 2024-12-11 20:59:27