[LeetCode]229. Majority Element II
2016-03-02 15:29
288 查看
Problem Description
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.[]https://leetcode.com/problems/majority-element-ii/]
思路
摩尔投票法。先利用投票法选出获得”票数“最多的两个数,在判断这两个数是否符合要求。
Code
package q229; import java.util.ArrayList; import java.util.List; public class Solution { public static List<Integer> majorityElement(int[] nums) { List<Integer> ans=new ArrayList<Integer>(); if(nums.length<1) return ans; int a=0,b=0; int atime=0,btime=0; for(int i=0;i<nums.length;i++){ if(nums[i]==a) atime++; else if(nums[i]==b) btime++; else if(atime==0){ a=nums[i]; atime=1; } else if(btime==0){ b=nums[i]; btime=1; } else{ atime--; btime--; } } atime=0; btime=0; for(int i=0;i<nums.length;i++){ if(nums[i]==a) atime++; else if(nums[i]==b) btime++; } if(atime>nums.length/3) ans.add(a); if(btime>nums.length/3) ans.add(b); return ans; } public static void main(String[] args) { int[] a={1,2}; System.out.print(majorityElement(a).toString()); } }
相关文章推荐
- c++第一次实验
- fragment之间切换的动画效果设置
- linux ---tail命令
- 20个你可能不知道的 Linux 网络工具
- 邓普顿:做有信仰的投资者
- 信息学奥林匹克竞赛-C语言贪吃蛇
- easyui 判断select下拉框是否多选,多选情况下清空默认值
- Android6.0的phone应用源码分析(7)——RIL层框架分析2
- 一个经典例子让你彻彻底底理解java回调机制
- c++第一次实验
- linux服务端笔试题
- shellcode实战编写示例
- 《打印行号以及显示行数的不同方法头脑风暴及实践》
- 键盘按钮keyCode大全,keyCode列表对照表
- JAVA 并发编程-应用篇
- C语言作业零梅
- gulp 使用初解
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- vSphere web client 虚拟机生成模板快速部署
- C++第一次实验