LeetCode------Majority Element
来源:互联网 发布:唱歌培训软件 编辑:程序博客网 时间:2024/05/01 05:05
题目简介
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 ⌋次数的数字。自己的解法
public class Solution { public int majorityElement(int[] nums) { int [] current = new int [2]; current [0] = 1; current [1] = nums[0]; int length = nums.length; int time = (int)Math.floor(length/2.0); Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < length; i++){ if(map.containsKey(nums[i]) == false) map.put(nums[i],1); else{ int value = map.get(nums[i]); value ++; if(value > current[0]){ current [0] = value; current [1] = nums[i]; } map.put(nums[i],value); } } return current[1]; }}
map.put(nums[i],1);否则就将这个数字对应的次数加1,并且将最大次数与这个次数进行比较,如果这个次数较大,则更新current数组。
Hot解法
// Sortingpublic int majorityElement1(int[] nums) { Arrays.sort(nums); return nums[nums.length/2];}
// Sortingpublic int majorityElement1(int[] nums) { Arrays.sort(nums); return nums[nums.length/2];}// Hashtable public int majorityElement2(int[] nums) { Map<Integer, Integer> myMap = new HashMap<Integer, Integer>(); //Hashtable<Integer, Integer> myMap = new Hashtable<Integer, Integer>(); int ret=0; for (int num: nums) { if (!myMap.containsKey(num)) myMap.put(num, 1); else myMap.put(num, myMap.get(num)+1); if (myMap.get(num)>nums.length/2) { ret = num; break; } } return ret;}
这个解法的思路也是利用HashMap来做,这个解法比我的解法好的一点是,它直接判断次数如果大于nums.length,就直接输出它。
// Moore voting algorithmpublic int majorityElement3(int[] nums) { int count=0, ret = 0; for (int num: nums) { if (count==0) ret = num; if (num!=ret) count--; else count++; } return ret;}
关于Moore's voting algorithm算法,大家可以看一下这篇文章http://blog.csdn.net/chfe007/article/details/42919017
0 0
- 【leetcode】Majority Element II,Majority element algorithm
- Leetcode: Majority Element &Majority Element II
- Leetcode Majority Element
- leetcode 169-Majority Element
- 【leetcode 哈希表】Majority Element
- LeetCode:Majority Element
- leetcode:Majority Element
- leetcode: Majority Element
- [LeetCode] Majority Element
- leetcode 153: Majority Element
- leetcode Majority Element
- LeetCode:Majority Element
- leetcode:Majority Element
- [LeetCode] Majority Element
- Leetcode-Majority Element
- [leetcode]Majority Element
- [LeetCode]Majority Element
- Leetcode: Majority Element
- 欢迎使用CSDN-markdown编辑器
- 一步步分析百度音乐的播放地址,利用Python爬虫批量下载
- 将按钮添加到窗体
- 《剑指offer》-反转链表
- poj 3177 3352 边双连通分量
- LeetCode------Majority Element
- JAVA面向对象API————List的特有功能
- 浏览器插件gooreplacer
- 把文本框的值转移到文本域案例
- mybatis的动态CRUD
- [TJOI2013]单词
- 机器学习入门系列三(关键词:逻辑回归,正则化)
- 通过鼠标移动到按钮上更改背景色案例
- 设置高德地图在Fragment中显示