leetcode Majority Element
2016-05-10 12:15
155 查看
题目链接:https://leetcode.com/problems/majority-element/
这道题目要求找出超过数组个数一半的元素
分析:和编程之美上的寻找发帖"水王"是同一个题目,如果每次都删除两个不同的元素,那么在剩下的元素中,原来超过数组个数一半的元素,现在仍然会超过数组个数的一半,但是问题的规模减小了;那么如果用程序实现这一原理呢?可以使用一个candidate来记录结果的候选,并用time来记录当前这个元素出现的次数,如果后面的元素和candidate不相同,就同时删除这个元素和候选元素,相当于删除一对不同的元素,实现代码如下:
这道题目要求找出超过数组个数一半的元素
分析:和编程之美上的寻找发帖"水王"是同一个题目,如果每次都删除两个不同的元素,那么在剩下的元素中,原来超过数组个数一半的元素,现在仍然会超过数组个数的一半,但是问题的规模减小了;那么如果用程序实现这一原理呢?可以使用一个candidate来记录结果的候选,并用time来记录当前这个元素出现的次数,如果后面的元素和candidate不相同,就同时删除这个元素和候选元素,相当于删除一对不同的元素,实现代码如下:
class Solution { public: int majorityElement(vector<int>& nums) { int n = nums.size(); int times = 0; int candidate; for(int i=0; i<n; ++i) { if(times == 0) { times = 1; candidate = nums[i]; } else { if(nums[i] == candidate) { ++times; } else { --times; } } } return candidate; } };
相关文章推荐
- 【HUSTOJ】1096: 约瑟夫问题
- 多进程和多线程文件拷贝
- 最简单的Servlet程序+原理
- <OJ_Sicily>Sum of Consecutive Primes
- Java 学习日志 2.1 if 条件选择语句(if switch 四种方法检验成绩状况)
- HTML页面单输入框回车自动提交问题-自留
- 获取系统当前时间
- 正则表达式
- CoffeeScript基础
- 让你的代码输入提高一倍的办法(包含词组,语句,语法的快捷方式)
- 零基础学习swift
- Android更新主线程UI的两种方式handler与runOnUiThread()
- eclipse不按ALT+/没有提示关键字的解决方法
- HDU 1394 Minimum Inversion Number(逆序对问题)
- Shell脚本 curl获取必应每日壁纸(Mac OS)
- UE4 Pak包加载
- 数据结构-树(tree)
- ios 接入微信sdk
- SpringMVC 学习-入门篇
- form异步无刷新提交,提交后可以显示弹出框,否则弹出框会被刷新不见,使用 preventDefault