[LeetCode]: 169: Majority Element

题目:

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.

 

思路:直接查找,使用arraylist记录结果,出现超过一半的数就返回

 

代码:

public class Solution {
    public static int bExist(ArrayList<int[]> nums,int intInput) {
        for(int i = 0;i<nums.size();i++){
            if( nums.get(i)[0]== intInput){
                return i;
            }
        }
        return -1;
    }
    
    public static int majorityElement(int[] nums) {
        ArrayList<int[]> arrResult  = new  ArrayList<int[]>();
        for(int i = 0;i<nums.length;i++){
            int intPos = bExist(arrResult,nums[i]);
            if( intPos == -1){
                int[] arrTemp = {nums[i],0};
                arrResult.add(arrTemp);
            }
            else{
                arrResult.get(intPos)[1] += 1; 
                
                if(arrResult.get(intPos)[1] > (nums.length/2)){
                    return arrResult.get(intPos)[0];
                }
            }
            

        }
        
        int intTemp = 0;
        int intPos = 0;
        for(int i = 0;i<arrResult.size();i++ ){
            if(intTemp <= arrResult.get(i)[1]){
                intTemp =arrResult.get(i)[1];
                intPos = i;
            }
        }
        
        return arrResult.get(intPos)[0];
    }
}

 

网上高人的思路:每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。

代码:

    public static int majorityElement(int[] nums) {
        int candidate = 0;
        int count = 0;
        for(int i = 0; i < nums.length; i ++)
        {
            if(count == 0)
            {
                candidate = nums[i];
                count = 1;
            }
            else
            {
                if(nums[i] == candidate)
                    count ++;
                else
                    count --;
            }
        }
        return candidate;
    }

 

posted @ 2015-09-23 00:01  savageclc26  阅读(126)  评论(0)    收藏  举报