资讯详情

C语言/数据结构位运算题解:异或XOR找出糖葫芦派对中的“独一无二山楂果数量“——只出现一次的数字

📅 2026/10/15 2:54:35 | 华诺云谱 👁 阅读
C语言/数据结构位运算题解:异或XOR找出糖葫芦派对中的“独一无二山楂果数量“——只出现一次的数字
问题描述班级里举办了一场糖葫芦派对每位同学都拿到了一串糖葫芦每串糖葫芦上插着数量不同的山楂果用整数表示。已知班级中除了一个同学的糖葫芦串上的山楂果数量是独一无二的外其他所有同学的糖葫芦串上的山楂果数量都恰好出现两次即每个数量都恰好有两位同学相同。班长小C想要快速找出那位拿着独一无二糖葫芦串的同学以便为他颁发“最特别糖葫芦奖”。要求设计一个算法在 O(n) 时间内找出独一无二的糖葫芦串上的山楂果数量其中 n 是班级人数。尽量减少额外空间的使用以体现你的算法优化能力。测试样例样例1输入candiedFruits [3, 5, 3, 2, 5, 4, 2]输出4解释数字 3 出现两次索引0和25 出现两次索引1和42 出现两次索引3和6只有数字 4 出现一次索引5因此独一无二的糖葫芦串是 4。样例2输入candiedFruits [1, 2, 1, 2, 3, 3, 7]输出7解释数字 1 出现两次索引0和22 出现两次索引1和33 出现两次索引4和5只有数字 7 出现一次索引6因此独一无二的糖葫芦串是 7。样例3输入candiedFruits [0, 0, 1, 1, 2, 2, 8, 8, 9]输出9解释数字 0 出现两次索引0和11 出现两次索引2和32 出现两次索引4和58 出现两次索引6和7只有数字 9 出现一次索引8因此独一无二的糖葫芦串是 9。约束条件1 ≤ candiedFruits.length ≤ 10010 ≤ candiedFruits[i] ≤ 1000班级人数为奇数即数组长度为奇数除了一个糖葫芦串的山楂果数量只出现一次外其余每个数量都恰好出现两次程序代码#include stdio.hint findUnique(int* candiedFruits, int candiedFruitsSize) {int result 0;for (int i 0; i candiedFruitsSize; i) {result ^ candiedFruits[i];}return result;}int main() {int test1[] {3, 5, 3, 2, 5, 4, 2};int test2[] {1, 2, 1, 2, 3, 3, 7};int test3[] {0, 0, 1, 1, 2, 2, 8, 8, 9};printf(%d\n, findUnique(test1, 7)); // 4printf(%d\n, findUnique(test2, 7)); // 7printf(%d\n, findUnique(test3, 9)); // 9return 0;}#include stdio.h int findUnique(int* candiedFruits, int candiedFruitsSize) { int result 0; for (int i 0; i candiedFruitsSize; i) { result ^ candiedFruits[i]; } return result; } int main() { int test1[] {3, 5, 3, 2, 5, 4, 2}; int test2[] {1, 2, 1, 2, 3, 3, 7}; int test3[] {0, 0, 1, 1, 2, 2, 8, 8, 9}; printf(%d\n, findUnique(test1, 7)); // 4 printf(%d\n, findUnique(test2, 7)); // 7 printf(%d\n, findUnique(test3, 9)); // 9 return 0; }运行结果
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑