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;
}

运行结果

相关推荐
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本2 小时前
数据结构第三课(时间复杂度)
数据结构·学习
Logic1014 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和
小π军5 小时前
最大重叠区间数量
数据结构·算法
Logic1016 小时前
C语言/数据结构字符串题解:找出DNA序列中未配对的独特序列——排序+遍历(O(nlogn))
c语言·数据结构·字符串·数组·排序·时间复杂度·算法题
Navigator_Z6 小时前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode
是隼人6 小时前
buuctf-pwn picoctf_2018_shellcode(ret2shellcode)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
wzdark7 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
潜创微科技7 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳