题解 | #微信红包#
微信红包
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; } }
}