C语言/数据结构位运算题解:异或XOR找出流水线上的“独特零件编号“——只出现一次的数字

问题描述

小明是一家汽车制造厂的工程师,工厂有多条流水线,每条流水线上有多个零件需要装配。每个零件都有一个唯一的编号,但由于生产批次不同,有些零件编号会出现两次(表示同一批次的正品和备件),只有一个零件编号是独特的(表示特殊测试件)。小明需要快速找出这个独特编号的零件,以便进行质量检测。

要求:

  1. 设计一个算法,在 O(n) 时间复杂度内找出独特编号的零件,其中 n 是流水线上零件的总数。
  2. 尽量减少额外空间的使用,以优化流水线检测效率。

测试样例

样例1:

输入:parts = [101, 102, 101, 103, 102, 104, 103] 输出:104 解释:编号 101、102、103 都出现了两次,只有 104 出现一次,因此是独特零件。

样例2:

输入:parts = [5, 9, 5, 9, 3] 输出:3 解释:编号 5 和 9 都出现了两次,只有 3 出现一次,因此是独特零件。

样例3:

输入:parts = [200, 200, 300, 400, 300, 400, 500] 输出:500 解释:编号 200、300、400 都出现了两次,只有 500 出现一次,因此是独特零件。

约束条件

  • 1 ≤ parts.length ≤ 1001
  • 0 ≤ partsi ≤ 1000
  • 流水线上零件总数为奇数
  • 除了一个零件编号只出现一次外,其余每个零件编号(如果存在)都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* parts, int partsSize) {

int result = 0;

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

result ^= partsi;

}

return result;

}

int main() {

int parts1\[\] = {101, 102, 101, 103, 102, 104, 103};

int parts2\[\] = {5, 9, 5, 9, 3};

int parts3\[\] = {200, 200, 300, 400, 300, 400, 500};

printf("%d\n", findUnique(parts1, 7)); // 104

printf("%d\n", findUnique(parts2, 5)); // 3

printf("%d\n", findUnique(parts3, 7)); // 500

return 0;

}

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

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

int main() {
    int parts1[] = {101, 102, 101, 103, 102, 104, 103};
    int parts2[] = {5, 9, 5, 9, 3};
    int parts3[] = {200, 200, 300, 400, 300, 400, 500};
    
    printf("%d\n", findUnique(parts1, 7));  // 104
    printf("%d\n", findUnique(parts2, 5));  // 3
    printf("%d\n", findUnique(parts3, 7));  // 500
    
    return 0;
}

运行结果

相关推荐
山下梅子酒2252 小时前
洛谷-入门-B2043
c语言
张小姐的猫2 小时前
【AI大模型接入SDK】 —— 数据管理 & 与Session模块进行联动
数据结构·数据库·c++·人工智能·python·chatgpt
careathers3 小时前
【数据结构】栈
java·数据结构
mmmmath_33 小时前
LeetCode.018.四数之和
数据结构·算法·leetcode
幼儿园蛋小黑3 小时前
【无标题】C语言变量,类型转换,运算符,输入和输出
c语言·嵌入式实时数据库
淡海水4 小时前
11-02-Unity-Mono-vs-IL2CPP-两种脚本后端的数据结构行为差异
数据结构·unity·游戏引擎·il2cpp·mono
梦帮科技4 小时前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5
雨落在了我的手上5 小时前
Java数据结构(十三):排序
数据结构
Logic1016 小时前
C语言/数据结构位运算题解:异或XOR找出独特卡片数字——只出现一次的元素
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质