题解 | #草原上优势牛种#
草原上优势牛种
https://www.nowcoder.com/practice/178705f48adc4e39ac8537a22e8941cd
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
int[] numbers; //将局部变量提到全局
public int majority_cow (int[] nums) {
// write code here
numbers = nums;
sort();
//因为出现次数最多的数总是大于数组长度的一半,所以直接返回数组中间的值
return nums[nums.length / 2];
}
/**
* 快速排序
* 先取start索引位置为基准值,left指针一直向右找是否存在比基准值大的数字,right指针向
* 左找比基准值小的数,然后交换,right指针指向的就是交换后基准值所在的位置,然后再对基准值
* 左右分别排序
*/
public void sort(){
int start = 0 , end = numbers.length - 1;
sort(start , end);
}
public void sort(int start , int end){
if(start >= end)
return;
int part = part(start, end);
sort(start , part - 1);
sort(part + 1 , end);
}
public int part(int start , int end){
int left = start , right = end + 1;
int n = numbers[start];
while(true){
while(numbers[++left] <= n){
if(left == end)
break;
}
while(numbers[--right] > n){
if(right == start)
break;
}
if(left >= right)
break;
int temp = numbers[left];
numbers[left] = numbers[right];
numbers[right] = temp;
}
int temp = numbers[start];
numbers[start] = numbers[right];
numbers[right] = temp;
return right;
}
}
