牛客-微信红包(java)
微信红包是一种通过微信发送给好友的一种红包形式,可以在微信中直接领取。在春节期间,人们经常会通过微信发送红包来表达节日祝福和友情。小明在春节期间收到了很多个微信红包,但是在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。这意味着这个红包金额是最频繁出现的金额,可能是发送者的特殊意图或者是系统的bug。
为了找到这个红包金额,我们可以通过统计每个红包金额出现的次数,然后找到出现次数超过总数一半的金额。下面是具体的算法思路和代码实现:
算法思路:
1. 创建一个HashMap来存储每个红包金额和其出现的次数。
2. 遍历所有的红包金额,将其存储到HashMap中,如果HashMap中已经存在该金额,则将其出现次数加1。
3. 遍历HashMap,找到出现次数超过总数一半的金额。
4. 返回找到的红包金额。
代码实现:
```javaimport java.util.HashMap;
import java.util.Map;
public class WeChatRedPacket {
public static int findRedPacketAmount(int[] redPacketAmounts) {
Map
int half = redPacketAmounts.length /2;
for (int amount : redPacketAmounts) {
if (map.containsKey(amount)) {
map.put(amount, map.get(amount) +1);
} else {
map.put(amount,1);
}
}
for (Map.Entry
if (entry.getValue() > half) {
return entry.getKey();
}
}
return -1;
}
public static void main(String[] args) {
int[] redPacketAmounts = {10,20,30,10,10,10,40,10,50};
int result = findRedPacketAmount(redPacketAmounts);
System.out.println("The red packet amount is: " + result);
}
}
```
在上面的代码中,我们首先创建了一个HashMap来存储每个红包金额和其出现的次数。然后遍历所有的红包金额,将其存储到HashMap中。最后遍历HashMap,找到出现次数超过总数一半的金额,并返回该金额。
在main方法中,我们定义了一个红包金额数组redPacketAmounts,并调用findRedPacketAmount方法来找到出现次数超过总数一半的红包金额,并打印出来。
通过这个算法,小明可以找到出现次数超过总数一半的红包金额,从而了解到发送者的特殊意图或者系统的bug。希望这个算法对你有所帮助。