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.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
找出出現(xiàn)次數(shù)大于數(shù)組1/2 長(zhǎng)度次的數(shù)字,
LeetCode Majority Element
。思路:
本題解法很多:
1.排序后判斷第n/2個(gè)元素與首元素是否相等
2.哈希表
3.每次移除兩個(gè)不等的元素
...
第3種方法最快,在實(shí)際應(yīng)用中,哪種方式的時(shí)間復(fù)雜度都是可以接受的,這里的實(shí)現(xiàn)使用了第二種,即借助哈希表來完成統(tǒng)計(jì),
電腦資料
《LeetCode Majority Element》(http://www.stanzs.com)。實(shí)現(xiàn)代碼:
public class Solution { public int MajorityElement(int[] nums) { if(nums.Length == 0){ return 0; } var hash = new Dictionary<int, int="">(); var max = 1; var maxKey = nums[0]; for(var i = 0;i < nums.Length; i++){ if(hash.ContainsKey(nums[i])){ hash[nums[i]] ++; if(max < hash[nums[i]]){ max = hash[nums[i]]; maxKey = nums[i]; } } else{ hash.Add(nums[i],1); } } return maxKey; }}</int,>