C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字

问题描述

小C今天带来了一堆美味的果子到班级分享,每个果子都有一个编号。同学们依次挑选果子,有趣的是,除了一个编号的果子之外,其他编号的果子都被挑选了恰好两次。小C想快速找出那个被挑选了奇数次的果子编号(也就是只被挑走一次的果子),以便确认剩下的果子是否分配均匀。

要求:

  1. 设计一个算法,在 O(n) 的时间复杂度内找出只出现一次的编号,其中 n 是挑选次数总数(即数组长度)。
  2. 尽量减少额外空间的使用,以体现算法的优化能力。

测试样例

样例1:

输入:fruits = [5, 2, 3, 2, 5, 3, 7] 输出:7 解释:编号 5、2、3 都出现了两次,只有编号 7 出现了一次。

样例2:

输入:fruits = [10, 10, 20, 30, 30] 输出:20 解释:编号 10 和 30 都出现了两次,只有编号 20 出现了一次。

样例3:

输入:fruits = [1, 1, 2, 2, 3, 3, 4, 4, 99] 输出:99 解释:编号 1、2、3、4 都出现了两次,只有编号 99 出现了一次。

约束条件

  • 1 ≤ fruits.length ≤ 1001(且数组长度必为奇数)
  • 0 ≤ fruitsi ≤ 1000
  • 除了一个编号只出现一次外,其余每个编号都恰好出现两次

程序代码

#include <stdio.h>

int findUniqueFruit(int* fruits, int fruitsSize) {

int result = 0;

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

result ^= fruitsi;

}

return result;

}

int main() {

int fruits1\[\] = {5, 2, 3, 2, 5, 3, 7};

int fruits2\[\] = {10, 10, 20, 30, 30};

int fruits3\[\] = {1, 1, 2, 2, 3, 3, 4, 4, 99};

printf("%d\n", findUniqueFruit(fruits1, 7)); // 7

printf("%d\n", findUniqueFruit(fruits2, 5)); // 20

printf("%d\n", findUniqueFruit(fruits3, 9)); // 99

return 0;

}

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

int findUniqueFruit(int* fruits, int fruitsSize) {
    int result = 0;
    for (int i = 0; i < fruitsSize; i++) {
        result ^= fruits[i];
    }
    return result;
}

int main() {
    int fruits1[] = {5, 2, 3, 2, 5, 3, 7};
    int fruits2[] = {10, 10, 20, 30, 30};
    int fruits3[] = {1, 1, 2, 2, 3, 3, 4, 4, 99};
    
    printf("%d\n", findUniqueFruit(fruits1, 7));  // 7
    printf("%d\n", findUniqueFruit(fruits2, 5));  // 20
    printf("%d\n", findUniqueFruit(fruits3, 9));  // 99
    
    return 0;
}

运行结果

相关推荐
深圳市快瞳科技有限公司1 小时前
面向端侧部署的多帧宠物身份识别:完整性评分机制与工程约束
人工智能·算法·计算机视觉·端侧ai·宠物识别·宠物ai·宠物身份识别
dear_bi_MyOnly2 小时前
栈和队列:从原理到应用全解析
c语言·开发语言·c++·学习·分类
从小白到软工3 小时前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程
悠仁さん3 小时前
非类型模板参数的特化与偏特化
java·数据结构·算法
垆边人似月.3 小时前
最优河堤加固(二分答案 + 前缀和)
算法
171320330计算机毕设编程3 小时前
计算机毕业设计 基于Hadoop的新能源汽车发展前景分析 LW PPT
java·大数据·hadoop·python·算法·随机森林·线性回归
haluhalu.4 小时前
深入理解 AI Agent(1.2):Harness 工程——模型之外的竞争力
前端·数据结构·人工智能·python·langchain·个人开发
垆边人似月.4 小时前
幻兽防御战(贪心算法)
数据结构·算法
DongQiShanRen4 小时前
六根硬件映射(下):物理闭环五步法,抽一条已实装的看
大数据·jvm·人工智能·算法·rust·哈希算法·集成学习