C语言/数据结构位运算题解:异或XOR找出地铁规划中的“独特坐标“——只出现一次的数字

问题描述

小明所在的城市正在规划一条新的地铁线路,需要选择一个理想的位置建设火车站。城市中有多个居民区,每个居民区的位置用一个整数坐标表示。已知居民区的位置坐标中,除了一个坐标值只出现一次外,其余每个坐标值都恰好出现两次。规划部门希望火车站建在那个唯一坐标的居民区附近,以最大化覆盖独特区域的居民。

要求:

  1. 设计一个算法,在 O(n) 时间内找出唯一不重复的坐标位置,其中 n 是居民区的数量。
  2. 尽量减少额外空间的使用,以体现算法的空间效率。

测试样例

样例1:

输入:locations = [5, 2, 3, 2, 5, 3, 9] 输出:9 解释:坐标 5、2、3 都出现了两次,只有 9 出现一次,是唯一不重复的位置。

样例2:

输入:locations = [0, 10, 5, 10, 0] 输出:5 解释:坐标 0 和 10 都出现了两次,只有 5 出现一次。

样例3:

输入:locations = [100, 200, 100, 300, 200, 300, 500] 输出:500 解释:坐标 100、200、300 都出现了两次,只有 500 出现一次。

约束条件

  • 1 ≤ locations.length ≤ 1001
  • 0 ≤ locationsi ≤ 1000
  • 居民区数量为奇数
  • 除了一个坐标值只出现一次外,其余每个坐标值都恰好出现两次

程序代码

#include <stdio.h>

int findUnique(int* locations, int locationsSize) {

int result = 0;

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

result ^= locationsi;

}

return result;

}

int main() {

int locations1\[\] = {5, 2, 3, 2, 5, 3, 9};

int locations2\[\] = {0, 10, 5, 10, 0};

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

printf("%d\n", findUnique(locations1, 7)); // 9

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

printf("%d\n", findUnique(locations3, 7)); // 500

return 0;

}

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

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

int main() {
    int locations1[] = {5, 2, 3, 2, 5, 3, 9};
    int locations2[] = {0, 10, 5, 10, 0};
    int locations3[] = {100, 200, 100, 300, 200, 300, 500};
    
    printf("%d\n", findUnique(locations1, 7));  // 9
    printf("%d\n", findUnique(locations2, 5));  // 5
    printf("%d\n", findUnique(locations3, 7));  // 500
    
    return 0;
}

运行结果

相关推荐
沉淀的.晴天1 小时前
FreeRTOS信号量
数据结构·算法
青山木2 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
wuyk5552 小时前
从零吃透 MQTT 通信|第 10 章 阿里云 / 腾讯云 MQTT 设备完整对接实战,三元组、签名、设备上云调试
c语言·开发语言·stm32·学习·阿里云·云计算·腾讯云
YSL0701243 小时前
线性表和顺序表
数据结构
_JoeZoe3 小时前
阿里云开发者社区用户服务协议
c语言·编译器·历史·应用领域·unix操作系统
老王爱玩车3 小时前
第2讲:C语言数据类型和变量
c语言·开发语言
huang5791473 小时前
数据结构的抽象化与接口复用设计理念4
数据结构
动词ing3 小时前
【学习笔记】数据结构(链表合并 双指针合并有序链表)
数据结构·笔记·学习
ysu_03144 小时前
19-插入排序与希尔排序
数据结构·算法·排序算法