题解 | #微信红包#
微信红包
https://www.nowcoder.com/practice/fbcf95ed620f42a88be24eb2cd57ec54
import java.util.*;
public class Gift {public int getValue(int[] gifts, int n) {if (n == 0) return 0; // 如果数组为空,返回0
import java.util.*;
public class Gift {
public int getValue(int[] gifts, int n) {
if (n == 0) return 0; // 如果数组为空,返回0
int candidate = gifts[0]; // 初始化候选者为数组的第一个元素
int count = 1; // 初始化计数器为1
for (int i = 1; i < n; i++) {
if (gifts[i] == candidate) {
count++; // 如果当前元素与候选者相同,计数器加1
} else if (count == 0) {
candidate =
gifts[i]; // 如果计数器为0,选择当前元素为新的候选者
count = 1; // 重置计数器为1
} else {
count--; // 如果当前元素与候选者不同,计数器减1
}
}
// 检查候选者是否真的是出现次数超过一半的元素
count = 0;
for (int i = 0; i < n; i++) {
if (gifts[i] == candidate) {
count++;
}
}
// 如果候选者的出现次数超过一半,则返回它;否则返回0
return count > n / 2 ? candidate : 0;
}
}
}