1.简述:
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组 gifts 及它的大小 n ,请返回所求红包的金额。
若没有金额超过总数的一半,返回0。
数据范围: ,红包金额满足
输入:
[1,2,3,2,2],5
复制
返回值:
2
输入:
[1,1,2,2,3,3],6
返回值:
0
2.代码实现:
import java.util.*;标签:yyds,红包,int,微信,真题,gifts,++,flag,num From: https://blog.51cto.com/u_15488507/5966308
public class Gift {
public int getValue(int[] gifts, int n) {
int flag = 1; int num = gifts[0];
for(int i = 1;i < n;i++){
if(gifts[i] == num){
flag ++;
}else{
flag --;
}
if(flag == 0){
num = gifts[i];
}
}
flag = 0;
for(int i = 0;i < n;i++){
if(gifts[i] == num){
flag ++;
}
}
if(flag > n / 2) return num;
else return 0;
// write code here
}