题解 | #数组中出现次数超过一半的数字#

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

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

import java.util.*;
public class Solution {
    public static int num;
    public int MoreThanHalfNum_Solution(int [] array) {
        qsort(array, 0, array.length - 1);
        return num;
    }
    public void qsort(int []a, int l, int r) {
        // Arrays.sort(array);
        // return array[array.length/2];

        int mid = a[l];
        int left = l;
        int right = r;
        int temp = 0;
        Boolean flag = false;
        while (left < right) {
            //将和mid相等的数不断往中间和后面移动,比mid小的数不断前移
            while ( a[left] < mid &&
                    left < right) { 
                left++;
            }
            temp = a[left];
            while (a[right] > mid && left < right) { //将和mid相等的数不断往中间和前面移动,比mid大的数不断后移
                right--;

            }
            if(left!=right){//不等则a[left] >= mid && a[right] <= mid
            a[left] = a[right];
            a[right] = temp;
            left++;
            right--;
            }
            //  if(left==right)不需要替换成mid,已经是mid
            }
        if (left >= a.length / 2) {
            num = a[a.length / 2];
            return ;
        } else if (left < a.length / 2) {
            if(left==right){
            qsort(a, left + 1, r);
            }else{
            qsort(a, left, r);
            }
        }
        }

    }

全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务