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

问题描述

班级里举办了一场糖葫芦派对,每位同学都拿到了一串糖葫芦,每串糖葫芦上插着数量不同的山楂果(用整数表示)。已知班级中除了一个同学的糖葫芦串上的山楂果数量是独一无二的外,其他所有同学的糖葫芦串上的山楂果数量都恰好出现两次(即每个数量都恰好有两位同学相同)。班长小C想要快速找出那位拿着独一无二糖葫芦串的同学,以便为他颁发"最特别糖葫芦奖"。

要求:

  1. 设计一个算法,在 O(n) 时间内找出独一无二的糖葫芦串上的山楂果数量,其中 n 是班级人数。
  2. 尽量减少额外空间的使用,以体现你的算法优化能力。

测试样例

样例1:

输入:candiedFruits = [3, 5, 3, 2, 5, 4, 2] 输出:4 解释:数字 3 出现两次(索引0和2),5 出现两次(索引1和4),2 出现两次(索引3和6),只有数字 4 出现一次(索引5),因此独一无二的糖葫芦串是 4。

样例2:

输入:candiedFruits = [1, 2, 1, 2, 3, 3, 7] 输出:7 解释:数字 1 出现两次(索引0和2),2 出现两次(索引1和3),3 出现两次(索引4和5),只有数字 7 出现一次(索引6),因此独一无二的糖葫芦串是 7。

样例3:

输入:candiedFruits = [0, 0, 1, 1, 2, 2, 8, 8, 9] 输出:9 解释:数字 0 出现两次(索引0和1),1 出现两次(索引2和3),2 出现两次(索引4和5),8 出现两次(索引6和7),只有数字 9 出现一次(索引8),因此独一无二的糖葫芦串是 9。

约束条件

  • 1 ≤ candiedFruits.length ≤ 1001
  • 0 ≤ candiedFruitsi ≤ 1000
  • 班级人数为奇数(即数组长度为奇数)
  • 除了一个糖葫芦串的山楂果数量只出现一次外,其余每个数量都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* candiedFruits, int candiedFruitsSize) {

int result = 0;

for (int i = 0; i < candiedFruitsSize; i++) {

result ^= candiedFruitsi;

}

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;

}

cpp 复制代码
#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;
}

运行结果

相关推荐
揽星河..2 小时前
【C语言】指针
c语言·开发语言
老师我太想进步了20264 小时前
【数据结构-1】例解算法复杂度
数据结构·算法
YSL0701245 小时前
一文通关-----排序
数据结构·算法
蹊黎16 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
夜不会漫长18 小时前
C++:红黑树
数据结构·算法
爱聊灵光的维C18 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
AI+程序员在路上18 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
揽星河..19 小时前
【C语言】扫雷游戏
c语言·算法·游戏
冻柠檬飞冰走茶21 小时前
PTA刷题集之Airline Routes(C语言实现)
c语言·开发语言·数据结构·算法
736c21 小时前
固件开发岗算法
数据结构·算法