C语言/数据结构位运算题解:异或XOR找出优秀项目组中的“独特编号“——只出现一次的数字

问题描述

一年一度的优秀项目组初选评比开始了!每个项目组都有一个独特的编号,但有趣的是,除了一个项目组之外,所有其他项目组的编号都恰好出现了两次(因为每个项目组都有一个小分组)。班长小C需要快速找出那个独特的项目组编号,以便通知他们直接进入下一轮评选。

要求:

  1. 设计一个算法,在 O(n) 的时间内找到独特的项目组编号,其中 n 是项目组的数量。
  2. 尽量减少额外空间的使用,以体现你的算法优化能力。

测试样例

样例1:

输入:groups = [101, 101, 202, 202, 303, 303, 404, 505, 505] 输出:404 解释:编号 404 的项目组是唯一没有配对的,直接进入下一轮。

样例2:

输入:groups = [0, 1, 0, 1, 2] 输出:2 解释:编号 2 的项目组只出现一次,是独特的。

样例3:

输入:groups = [7, 3, 3, 7, 10] 输出:10 解释:10 是唯一的独特编号,直接晋级。

约束条件

  • 1 ≤ groups.length ≤ 1001
  • 0 ≤ groupsi ≤ 1000
  • 项目组数量为奇数
  • 除了一个项目组编号只出现一次外,其余每个编号都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* groups, int groupsSize) {

int result = 0;

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

result ^= groupsi;

}

return result;

}

int main() {

int groups1\[\] = {101, 101, 202, 202, 303, 303, 404, 505, 505};

int groups2\[\] = {0, 1, 0, 1, 2};

int groups3\[\] = {7, 3, 3, 7, 10};

printf("%d\n", findUnique(groups1, 9)); // 404

printf("%d\n", findUnique(groups2, 5)); // 2

printf("%d\n", findUnique(groups3, 5)); // 10

return 0;

}

cpp 复制代码
#include <stdio.h>

int findUnique(int* groups, int groupsSize) {
    int result = 0;
    for (int i = 0; i < groupsSize; i++) {
        result ^= groups[i];
    }
    return result;
}

int main() {
    int groups1[] = {101, 101, 202, 202, 303, 303, 404, 505, 505};
    int groups2[] = {0, 1, 0, 1, 2};
    int groups3[] = {7, 3, 3, 7, 10};
    
    printf("%d\n", findUnique(groups1, 9));  // 404
    printf("%d\n", findUnique(groups2, 5));  // 2
    printf("%d\n", findUnique(groups3, 5));  // 10
    
    return 0;
}

运行结果

相关推荐
小向是个Der11 小时前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
路灯上の马陈12 小时前
二叉树的定义与性质
数据结构·二叉树·树结构·1024程序员节
bkspiderx14 小时前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
Bshaya_16 小时前
红黑树详解:概念、规则与插入实现
数据结构·红黑树·二叉搜索树·平衡树·插入逻辑
WBluuue16 小时前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
路灯上の马陈17 小时前
数据结构-树
数据结构·1024程序员节
benjormin18 小时前
Java数据结构 二叉搜索树
数据结构·算法
LDR00619 小时前
LDR6100 智能遥控器精品软文:Type-C 充电口与低功耗量产维护
c语言·开发语言
H.莓飛21 小时前
【数据结构】排序总结与规模实测
linux·服务器·开发语言·数据结构·visual studio·1024程序员节
FLJwu1 天前
运动相机采购实战|第四篇(终章):一张清单走完选型全流程,把风险拦在源头
c语言·开发语言·数码相机·运动相机·oem 量产