leetcode: Majority Element

来源:互联网 发布:泰格软件 编辑:程序博客网 时间:2024/05/20 20:56

169. Majority Element

 My Submissions
Total Accepted: 122095 Total Submissions: 289750 Difficulty: Easy

Given an array of size n, find the majority element. The majority element is the element that appears 

more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

方法一:

将数组排序,然后中间位置的数字一定为次数大于n/2次的数。

import java.util.*;public class Solution {    public int majorityElement(int[] nums) {        Arrays.sort(nums);        int m = nums.length;        return nums[m/2];    }}
方法二:

每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。

可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。

import java.util.*;public class Solution {    public int majorityElement(int[] nums) {        int count = 0;        int candidate = 0;        for(int i = 0 ; i < nums.length; i++) {            if(count == 0) {                candidate = nums[i];                count ++;            } else if(candidate == nums[i]) {                count ++;            } else if(candidate != nums[i]) {                count --;            }        }        return candidate;    }}


0 0
原创粉丝点击