查找数组中出现次数超过一半的数字

来源:互联网 发布:华为网络基础知识 编辑:程序博客网 时间:2024/05/02 01:45
package test;public class Test3 {static int solve(int[] arr,int len){int index = -1;int mid = (len)/2;int low = 0;int high = len-1;while(index != mid){index = partition(arr, low, high);if(index == mid) break;if(index>mid){high = index-1;}else{low = index+1;}}return arr[mid];}static int partition(int[] arr,int low,int high){int flag = arr[low];while(low<high){while(low<high && arr[high]>=flag) high--;arr[low] = arr[high];while(low<high && arr[low] <= flag) low++;arr[high] = arr[low];}arr[low] = flag;return low;}public static void main(String[] args) {int[] arr = new int[]{1,2,3,2,2,2,5,4,2};System.out.println(solve(arr, arr.length));}}

0 0
原创粉丝点击