您的位置:首页 > 其它

leetcode:Majority Element

2014-12-24 22:44 218 查看
题目的意思是在数组中有一个数值出现的次数超过了数组长度的一半,求出那个数

最直观的做法是进行HashMap的映射,key为num,value为times

但是题意告知有一个数出现次数超过了一半,利用这个信息

对于每一个刚刚出现的num,初始设置他的times为1,遍历数组时,

遇到相同的times就++;遇到不同的时候times--,当times==0时,变换num值,

因为出现times超过一般,所以最后一个就是majority element

public class Solution {
public int majorityElement(int[] num) {
int ans = num[0];
int times = 1;
for(int i = 1; i < num.length; ++i){
if(ans == num[i]){
++times;
}
else if(times > 0){
--times;
}
else{
times = 1;
ans = num[i];
}
}
return ans;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: