您的位置:首页 > 移动开发 > 微信开发

牛客网---2016---腾讯微信红包

2017-09-03 17:22 239 查看
老实说,我TMD有点难受,周末本打算去火锅店把卡退了,老人家一个微信告诉我,4点左右实验室来个人,结果嘞,人到了5点我也没看到,啧啧,算了,没事,昨天和对象玩的很好,就很棒,无敌,图片不丢了,这种东西太辣眼睛了。。。另外啊,我今天的淘宝出问题了,还好又好了。。。



题目:

春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。

给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。

若没有金额超过总数的一半,返回0。

输入:

[1,2,3,2,2],5


输出:

2


解析:

1 . 没什么重点,就是从左到右,找到目前为止最多的节点

解题所需函数:

代码:

import java.util.*;

public class Gift {
public int getValue(int[] gifts, int n) {
// write code here
if(gifts.length<n){
return 0;
}
if(gifts.length==0){
return 0;
}
int count=0,temp=0;
// 用于确定截止到目前为止,出现数目最多的点,啧啧
for(int i=0; i<n; i++){
// 遍历所有数据
if(count==0){
// 确定临时函数
temp=gifts[i];
count=1;
}else{
if(temp==gifts[i]){
count++;
}else{
count--;
}
}
}
int size=0;
for(int i=0; i<n; i++){
if(temp==gifts[i]){
size++;
}
}
return (size>n/2)?temp:0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: