lintcode-medium-Majority Number III
2016-03-30 02:51
225 查看
Given an array of integers and a number k, the majority number is the number that occurs
Find it.
Notice
There is only one majority number in the array.
Example
Given
Challenge
O(n) time and O(k) extra space
more than 1/kof the size of the array.
Find it.
Notice
There is only one majority number in the array.
Example
Given
[3,1,2,3,2,3,3,4,4,4]and
k=3, return
3.
Challenge
O(n) time and O(k) extra space
public class Solution { /** * @param nums: A list of integers * @param k: As described * @return: The majority number */ public int majorityNumber(ArrayList<Integer> nums, int k) { // write your code if(nums == null || nums.size() == 0 || k < 1) return 0; if(k == 1) return nums.get(0); HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); int size = nums.size(); for(int i = 0; i < size; i++){ int temp = nums.get(i); if(map.containsKey(temp)){ map.put(temp, map.get(temp) + 1); } else{ if(map.size() < k){ map.put(temp, 1); } else{ Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry<Integer, Integer> entry = it.next(); if(entry.getValue() == 1){ it.remove(); } else{ entry.setValue(entry.getValue() - 1); } } } } } int count = 0; int result = 0; for(Map.Entry<Integer, Integer> entry: map.entrySet()){ int candidate = entry.getKey(); int num = 0; for(int i = 0; i < size; i++) if(nums.get(i) == candidate) num++; if(num > count){ count = num; result = candidate; } } return result; } }
相关文章推荐
- 软件测试4
- 二叉树前序、中序、后序遍历的相互求法
- Android学习之性能工具traceView使用
- python 编码问题
- 20135323符运锦----第三章知识点总结
- 当你从事不喜欢的事怎么办
- 【C#进阶系列】18 特性Attribute
- 数据库分片技术
- scala隐式参数(implicit)
- 进取心的重要
- OpenStack入门 之 基本组件
- jQuery源码解析(3)—— ready加载、queue队列
- sim900GPRS模块ppp拨号上网
- OpenStack入门 之 管理的资源
- 64位win7下PL/SQLDEVELOPER登陆报ORA-12154:TNS:无法处理服务器名
- SHELL练习题
- Java NIO:浅析I/O模型
- 实现Twitter-UI效果
- springmvc和struts2的区别
- LinkedList源码解析