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

问题描述

小A是某科技公司的数据分析师,他每天需要处理大量的数据表。今天,系统生成了n张数据表,每张表都有一个唯一的整数编号。但由于系统故障,除了一个编号只出现一次外,其余每个编号都恰好出现了两次。而那个只出现一次的独特编号对应的数据表可能无法顺利产出。小A需要快速找出这个独特的编号,以便及时修复问题,确保数据表能顺利产出。

要求:

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

测试样例

样例1:

输入:tables = [101, 101, 202, 202, 303, 303, 404, 505, 505] 输出:404 解释:编号101、202、303、505都出现了两次,只有编号404出现一次,因此404是独特的编号。

样例2:

输入:tables = [0, 1, 0, 1, 2] 输出:2 解释:编号0和1都出现了两次,只有编号2出现一次,因此2是独特的编号。

样例3:

输入:tables = [7, 3, 3, 7, 10] 输出:10 解释:编号3和7都出现了两次,只有编号10出现一次,因此10是独特的编号。

约束条件

  • 1 ≤ tables.length ≤ 1001
  • 0 ≤ tablesi ≤ 1000
  • 数据表数量为奇数
  • 除了一个编号只出现一次外,其余每个编号都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* tables, int tablesSize) {

int result = 0;

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

result ^= tablesi;

}

return result;

}

int main() {

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

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

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

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

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

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

return 0;

}

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

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

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

运行结果

相关推荐
好想像大佬一样能够ak所有30 分钟前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
chenbingjie_c1 小时前
C++ STL 适配器:stack & queue,从 vector/list 到 deque 深度解析
数据结构·c++
垆边人似月.4 小时前
华为OD算法题:查找众数及中位数
数据结构·算法·leetcode
CoderYanger5 小时前
一轮复习——F.动态规划模型总结(入门篇)
java·开发语言·数据结构·算法·leetcode·职场和发展·动态规划
一只旭宝6 小时前
数据结构与算法复习手册:从写过,到讲清楚
开发语言·数据结构·c++·算法
神仙别闹6 小时前
基于C语言开发的捕捉流星小游戏
c语言·开发语言
All for pursuit.7 小时前
【动态规划-1】121.买卖股票的最佳时机
数据结构·c++·算法·leetcode·动态规划
水饺编程7 小时前
第1章,[Win32 章节]:API 及 内存管理模式
c语言·c++·windows·visual studio
Logic1017 小时前
C语言/数据结构位运算题解:异或XOR找出优秀项目组中的“独特编号“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
彦8 小时前
C和C++笔记
c语言·c++·笔记