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.

Example 1:

Input: [3,2,3]
Output: 3

Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2

二 分析

easy级别,求一个数组的出现过半的元素。今天的一个面试题。真的预见了。

先想到就是用map计数。

public int majorityElement(int[] nums) {
        
		//conner case
		if(nums==null||nums.length==0){
			return 0;
		}
		//
		Map map= new HashMap();
		
		for(int num:nums){
			if(map.containsKey(num)){
				int tmp = (int) map.get(num);
				if(tmp>= nums.length/2){
					return num;
				}
				map.put(num, tmp+1);
			}else{
				map.put(num, 1);
			}
			
		}	
		
		return nums[0];		
    }

Runtime: 13 ms, faster than 32.50% of Java online submissions for Majority Element.

Memory Usage: 40.1 MB, less than 99.26% of Java online submissions forMajority Element.

换个更简洁的方式,因为过半,排序后中间位置后面那个元素就是。

public int majorityElement(int[] nums) {
		// conner case
		if (nums == null || nums.length == 0) {
			return 0;
		}
		Arrays.sort(nums);
		return nums[nums.length / 2];		
	}

Runtime: 1 ms, faster than 99.90% of Java online submissions for Majority Element.

Memory Usage: 41.2 MB, less than 86.76% of Java online submissions forMajority Element.

点滴积累,感谢所有帮助我的朋友。

 

你可能感兴趣的:(leetcode)