C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字

问题描述

小明最近沉迷于一个奇妙的货币交易游戏。游戏中有多种不同面值的货币,但有趣的是,除了某一种特殊货币外,每种货币都恰好有两枚相同的。小明需要快速找出那枚独一无二的货币面值,以便完成交易任务。

要求:

  1. 设计一个算法,在 O(n) 时间复杂度内找出唯一不重复的货币面值
  2. 只能使用 O(1) 的额外空间复杂度(即常数空间)
  3. 提示:考虑使用位运算的特性来优化解决方案

测试样例

样例1:

输入:coins = [5, 10, 5, 10, 20, 30, 30] 输出:20 解释:面值 5、10、30 都出现了两次,只有面值 20 出现了一次。

样例2:

输入:coins = [1, 2, 1, 2, 3, 3, 4] 输出:4 解释:面值 1、2、3 都出现了两次,只有面值 4 出现了一次。

样例3:

输入:coins = [100, 200, 100, 300, 200] 输出:300 解释:面值 100、200 都出现了两次,只有面值 300 出现了一次。

约束条件

  • 1 ≤ coins.length ≤ 1001
  • 0 ≤ coinsi ≤ 1000
  • 货币数量为奇数(保证为 2k+1 的形式)
  • 除了一个货币面值只出现一次外,其余每个面值都恰好出现两次
  • 必须使用 O(n) 时间复杂度和 O(1) 空间复杂度的算法

程序代码

#include <stdio.h>

int findUnique(int* coins, int coinsSize) {

int result = 0;

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

result ^= coinsi;

}

return result;

}

int main() {

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

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

int coins3\[\] = {100, 200, 100, 300, 200};

printf("%d\n", findUnique(coins1, 7)); // 20

printf("%d\n", findUnique(coins2, 7)); // 4

printf("%d\n", findUnique(coins3, 5)); // 300

return 0;

}

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

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

int main() {
    int coins1[] = {5, 10, 5, 10, 20, 30, 30};
    int coins2[] = {1, 2, 1, 2, 3, 3, 4};
    int coins3[] = {100, 200, 100, 300, 200};
    
    printf("%d\n", findUnique(coins1, 7));  // 20
    printf("%d\n", findUnique(coins2, 7));  // 4
    printf("%d\n", findUnique(coins3, 5));  // 300
    
    return 0;
}

运行结果

相关推荐
彦4 小时前
C和C++笔记
c语言·c++·笔记
Code_Solitude5 小时前
反码,补码,原码
c语言
FLJwu5 小时前
运动相机按键与连接器硬件选型实战02:USB‑C接口选型|防水失效、虚接断连、腐蚀烧口量产大坑
c语言·开发语言·经验分享·数码相机·相机·运动相机·oem 量产
fj800j5 小时前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
垆边人似月.6 小时前
分割数组的最大值最小化(200分 / 二分答案 + 贪心)
数据结构·算法·排序算法
Zw-awa7 小时前
陀螺小车传奇之00011000
c语言·stm32
程序员清风8 小时前
排序算法:从冒泡排序到归并排序
数据结构·算法·排序算法
万年咸鱼8 小时前
C语言内功心法篇——变量与数据类型
c语言·jvm·算法
Ada's17 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
wanderist.21 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法