春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发
某个红包金额出现的次数超过了红包总的一半。请帮小明找到该红包金额.写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n, 请返回所求红包的金额。若没有金额超过总数的一半,返回0。
public class Test2 {
public int getValue(int[] gifts, int n) {int key = gifts[0];int count = 1;for (int i = 1; i < n; i++) {if (gifts[i] == key){count++;}else {count--;}if (count == 0){key = gifts[i];count = 1;}}//经过上面的循环一定能确定出来key 是重复次数最多的数//下面这个循环用来判断key重复的次数是否大于数组长度的一半//如果大于就返回key 如果小于就返回0int num = 0;for (int i = 0; i < n; i++) {if (gifts[i] == key){num++;}}if (num > (n / 2)){return key;}else {return 0;}}
春节期间小明使用微信收到很多个红包 非常开心。在查看领取红包记录时发现 某个红包金额出现的次数超过了红包总的一半。请帮小明找到该红包金额。
如果觉得《春节期间小明使用微信收到很多个红包 非常开心。在查看领取红包记录时发现 某个红包》对你有帮助,请点赞、收藏,并留下你的观点哦!