C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字

问题描述

小明是蛋糕工厂的生产主管,工厂每天需要根据订单生产不同口味的蛋糕。订单列表中的每种口味(用整数表示)都恰好出现两次,但有一种特殊口味的蛋糕订单只出现一次(这是VIP客户的定制订单)。小明需要快速找出这个只出现一次的独特口味,以便优先安排生产。

要求:

  1. 设计一个算法,在O(n)的时间复杂度内找出只出现一次的蛋糕口味编号。
  2. 尽量减少额外空间的使用,优化资源分配效率。

测试样例

样例1:

输入:orders = [1, 1, 2, 2, 3, 3, 4, 5, 5] 输出:4 解释:口味1出现2次,2出现2次,3出现2次,4出现1次,5出现2次。因此独特口味是4。

样例2:

输入:orders = [0, 1, 0, 1, 2] 输出:2 解释:口味0出现2次,1出现2次,2出现1次。因此独特口味是2。

样例3:

输入:orders = [7, 3, 3, 7, 10] 输出:10 解释:口味7出现2次,3出现2次,10出现1次。因此独特口味是10。

约束条件

  • 1 ≤ orders.length ≤ 1001
  • 0 ≤ ordersi ≤ 1000
  • 订单数量为奇数(因为除了一种口味出现一次外,其余每种口味都恰好出现两次)
  • 输入保证只有一种口味出现一次,其余每种口味都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* orders, int ordersSize) {

int result = 0;

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

result ^= ordersi;

}

return result;

}

int main() {

int orders1\[\] = {1, 1, 2, 2, 3, 3, 4, 5, 5};

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

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

printf("%d\n", findUnique(orders1, 9)); // 4

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

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

return 0;

}

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

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

int main() {
    int orders1[] = {1, 1, 2, 2, 3, 3, 4, 5, 5};
    int orders2[] = {0, 1, 0, 1, 2};
    int orders3[] = {7, 3, 3, 7, 10};
    
    printf("%d\n", findUnique(orders1, 9));  // 4
    printf("%d\n", findUnique(orders2, 5));  // 2
    printf("%d\n", findUnique(orders3, 5));  // 10
    
    return 0;
}

运行结果

相关推荐
another heaven29 分钟前
【C/C++ C++ 新特性中的那些内存优化的特性】
c语言·开发语言·c++
敲代码的苦1339 分钟前
头歌 数据结构—消防资源调度
数据结构·算法
ysu_031439 分钟前
【C++ 进阶之路】(二)从内联函数到类与对象:深挖内存对齐、this 指针与三大默认成员函数
开发语言·数据结构·c++·笔记·面向对象·this
WJ.Polar1 小时前
异常、泛型、集合、Stream流
java·数据结构
我叫洋洋1 小时前
Allegro 画布“垃圾显示“清理指南:把板子调成干净工作台(实战总结)
c语言·c++·单片机·嵌入式硬件·eda·嘉立创
wuminyu1 小时前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++
Hello World . .2 小时前
【嵌入式学习笔记 Day 1】
linux·数据结构·笔记
H.莓飛2 小时前
【数据结构】归并与外排序
linux·服务器·c语言·开发语言·数据结构·visual studio
xiaobobo33302 小时前
关于c语言循环结构的一些思考
c语言·业务逻辑·流程控制·循环结构·移植+输入
Navigator_Z2 小时前
LeetCode //C - 1304. Find N Unique Integers Sum up to Zero
c语言·算法·leetcode