
问题描述小明是一名网络安全监控员负责处理线上系统的各种报警信息。系统每天会产生大量报警但同一种报警通常会连续出现两次表示重复事件只有一种报警类型是真正需要立即处理的独特事件。为了高效分类报警小明需要设计一个算法来快速识别出那个只出现一次的独特报警类型。给定一个整数数组alerts其中每个元素代表一种报警类型编号。除了一个报警类型外其他所有报警类型都恰好出现了两次。请帮助小明找出那个只出现一次的独特报警类型编号。要求设计一个算法使其时间复杂度为 O(n)其中 n 是报警的数量。尽量减少额外空间的使用以体现算法的优化能力。测试样例样例1输入alerts [1, 1, 2, 2, 3, 3, 4, 5, 5]输出4解释报警类型 4 只出现一次是需要立即处理的独特事件。样例2输入alerts [0, 1, 0, 1, 2]输出2解释报警类型 2 是唯一出现一次的独特报警。样例3输入alerts [7, 3, 3, 7, 10]输出10解释10 是报警列表中唯一不重复的报警类型。约束条件1 ≤ alerts.length ≤ 10010 ≤ alerts[i] ≤ 1000报警数量为奇数除了一个报警类型只出现一次外其余每个报警类型都恰好出现两次程序代码#include stdio.hint findUnique(int* alerts, int alertsSize) {int result 0;for (int i 0; i alertsSize; i) {result ^ alerts[i];}return result;}int main() {int alerts1[] {1, 1, 2, 2, 3, 3, 4, 5, 5};int alerts2[] {0, 1, 0, 1, 2};int alerts3[] {7, 3, 3, 7, 10};printf(%d\n, findUnique(alerts1, 9)); // 4printf(%d\n, findUnique(alerts2, 5)); // 2printf(%d\n, findUnique(alerts3, 5)); // 10return 0;}#include stdio.h int findUnique(int* alerts, int alertsSize) { int result 0; for (int i 0; i alertsSize; i) { result ^ alerts[i]; } return result; } int main() { int alerts1[] {1, 1, 2, 2, 3, 3, 4, 5, 5}; int alerts2[] {0, 1, 0, 1, 2}; int alerts3[] {7, 3, 3, 7, 10}; printf(%d\n, findUnique(alerts1, 9)); // 4 printf(%d\n, findUnique(alerts2, 5)); // 2 printf(%d\n, findUnique(alerts3, 5)); // 10 return 0; }运行结果