算法面试题-leetcode学习之旅(一)
2015-10-27 20:20
561 查看
问题描述
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.
解决思路:
推荐算法:
Moore voting algorithm–每找出两个不同的element,就成对删除即count–,最终剩下的一定就是所求的。时间复杂度:O(n)
java实现:
public class Solution { public int majorityElement(int[] nums) { //0627 //Moore Voting int n = nums.length; int candidate = 0; int times = 0; for(int i = 0; i < n; i++){ if(times == 0) candidate = nums[i]; if(nums[i] != candidate){ times--; } else{ times++; } } return candidate; //0631 } }
c实现:
class Solution { public: int majorityElement(vector<int> &num) { int elem = 0; int count = 0; for(int i = 0; i < num.size(); i++) { if(count == 0) { elem = num[i]; count = 1; } else { if(elem == num[i]) count++; else count--; } } return elem; } };
相关文章推荐
- 算法面试题-leetcode学习之旅(一)
- 黑马程序员—基础-TreeSet的使用
- 猎豹移动面试题
- 黑马程序员—基础—文件系统操作命令
- 黑马程序员—基础—Java多线程编程详解
- 软件测试员----面试,你准备好了么?
- Java基础面试
- 黑马程序员—基础—程序设计的学习方法
- 黑马程序员—基础—设计一个方法,用于获取一个字符串中指定子串出现的次数,
- 月薪3万的程序员都避开了哪些坑
- 后台开发面试经验
- android面试题 不单单为了面试也是一次很好的学习
- 月薪3万的程序员都避开了哪些坑
- 一份技术简历是如何搞定BAT的面试官?
- 转载华为技术服务工程师面试
- [.Net码农][FastReport.Net] 加载数据与模板
- 转载华为2015校园招聘研发面试总结(获得offer)
- 转载一些面试题
- JAVA多线程和并发基础面试问答
- JAVA多线程和并发基础面试问答