ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C语言/数据结构位运算题解:异或XOR找出游戏节中“没有队友的孤独同学“——只出现一次的数字

C语言/数据结构位运算题解:异或XOR找出游戏节中“没有队友的孤独同学“——只出现一次的数字 问题描述在校园游戏节中小红所在的班级正在玩一个“寻找队友”的游戏。每位同学都获得了一个数字手环上面的数字代表他们的队伍编号。有趣的是除了一个同学的数字是独特的以外其他所有同学的数字都恰好有另一个人与之相同即组成一对队友。现在游戏规则要求快速找出那个没有队友的孤独同学的数字以便帮助他找到特殊奖励。请你设计一个高效的算法帮助小红在O(n)的时间复杂度内找出这个独特的数字并且尽量减少额外空间的使用。测试样例样例1输入handbands [5, 3, 5, 2, 3, 1, 1]输出2解释数字2只出现一次是唯一没有队友的同学。样例2输入handbands [10, 20, 10, 30, 20, 40, 40]输出30解释30是列表中唯一不重复的数字。样例3输入handbands [0, 0, 1, 1, 2, 2, 3]输出3解释数字3仅出现一次其他数字都成对出现。约束条件1 ≤ handbands.length ≤ 10010 ≤ handbands[i] ≤ 1000班级人数为奇数除了一个数字手环只出现一次外其余每个数字手环都恰好出现两次程序代码#include stdio.hint findUnique(int* handbands, int handbandsSize) {int result 0;for (int i 0; i handbandsSize; i) {result ^ handbands[i];}return result;}int main() {int test1[] {5, 3, 5, 2, 3, 1, 1};int test2[] {10, 20, 10, 30, 20, 40, 40};int test3[] {0, 0, 1, 1, 2, 2, 3};printf(%d\n, findUnique(test1, 7)); // 2printf(%d\n, findUnique(test2, 7)); // 30printf(%d\n, findUnique(test3, 7)); // 3return 0;}#include stdio.h int findUnique(int* handbands, int handbandsSize) { int result 0; for (int i 0; i handbandsSize; i) { result ^ handbands[i]; } return result; } int main() { int test1[] {5, 3, 5, 2, 3, 1, 1}; int test2[] {10, 20, 10, 30, 20, 40, 40}; int test3[] {0, 0, 1, 1, 2, 2, 3}; printf(%d\n, findUnique(test1, 7)); // 2 printf(%d\n, findUnique(test2, 7)); // 30 printf(%d\n, findUnique(test3, 7)); // 3 return 0; }运行结果
返回列表