[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/feixiangcode/algorithm/master/Week_04/id_30/LeetCode_169_30.java [Back]  [Original]

package com.shufeng.algorithm4.demo;

import java.util.Random;

/**
 * @author gsf
 * @date 2019-05-11 22:41
 */
public class LeetCode_169_30 {
    public static void main(String[] args) {
        int[] arr = {47,47,72,47,72,47,79,47,12,92,13,47,47,83,33,15,18,47,47,47,47,64,47,65,47,47,47,47,70,47,47,55,47,15,60,47,47,47,47,47,46,30,58,59,47,47,47,47,47,90,64,37,20,47,100,84,47,47,47,47,47,89,47,36,47,60,47,18,47,34,47,47,47,47,47,22,47,54,30,11,47,47,86,47,55,40,49,34,19,67,16,47,36,47,41,19,80,47,47,27};
        int i = majorityElement(arr);
        System.out.println(i);
    }

    public static int majorityElement(int[] nums) {
        quickSort1(nums, 0, nums.length-1);
        return nums[nums.length / 2];
    }

    /**
     * leetcode  
     * 
     * 
     */
    private static void quickSort1(int[] nums, int l, int r) {
        if (l >= r) {
            return;
        }
        // 
        int s = new Random().nextInt(nums.length);
        swap1(nums, l, s);
        int v = nums[l];
        // ivi~k v
        int i = l;
        // 
        int k = l + 1;
        // v
        int j = r + 1;

        while (k < j) {
            if (nums[k] < v) {
                // V
                swap1(nums, k, i + 1);
                i++;
                k++;
            } else if (nums[k] > v) {
                swap1(nums, k, j - 1);
                j--;
            } else {
                k++;
            }
        }
        swap1(nums, l, i);
        quickSort1(nums, l, i - 1);
        quickSort1(nums, j, r);
    }

    private static void swap1(int[] arr, int i, int j) {
        int tem = arr[i];
        arr[i] = arr[j];
        arr[j] = tem;
    }
}

Web Proxy Viewer  |  New URL  |  Original Page