C语言/数据结构位运算题解:异或XOR找出学习计划中的“独特学习时间“——只出现一次的数字

问题描述

小明和小红是两位热爱学习的同学,他们决定利用暑假时间学习新技能。他们列出了 n 个技能,每个技能有一个学习时间(单位:小时)。有趣的是,除了一个技能外,所有技能的学习时间都恰好出现了两次,这意味着有两个技能需要相同的时间完成。只有一个技能的学习时间是独一无二的。

现在,他们需要找出那个独特学习时间的技能,以便合理规划学习计划。请你设计一个算法,帮助他们在 O(n) 时间内找到这个独特学习时间的技能,同时尽量减少额外空间的使用。

要求:

  1. 设计一个算法,使其时间复杂度为 O(n),其中 n 是技能的数量。
  2. 尽量减少额外空间的使用,以体现你的算法优化能力。

测试样例

样例1:

输入:times = [5, 10, 5, 10, 15, 20, 20] 输出:15 解释:学习时间 15 小时的技能是唯一没有配对的。

样例2:

输入:times = [0, 2, 0, 2, 1] 输出:1 解释:学习时间 1 小时的技能只出现一次,是独特的。

样例3:

输入:times = [3, 8, 3, 8, 12] 输出:12 解释:12 是技能列表中唯一一个不重复的学习时间。

约束条件

  • 1 ≤ times.length ≤ 1001
  • 0 ≤ timesi ≤ 1000
  • 技能数量为奇数
  • 除了一个技能的学习时间只出现一次外,其余每个学习时间都恰好出现两次

程序代码

#include <stdio.h>

int findUniqueTime(int* times, int timesSize) {

int result = 0;

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

result ^= timesi;

}

return result;

}

int main() {

int times1\[\] = {5, 10, 5, 10, 15, 20, 20};

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

int times3\[\] = {3, 8, 3, 8, 12};

printf("%d\n", findUniqueTime(times1, 7)); // 15

printf("%d\n", findUniqueTime(times2, 5)); // 1

printf("%d\n", findUniqueTime(times3, 5)); // 12

return 0;

}

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

int findUniqueTime(int* times, int timesSize) {
    int result = 0;
    for (int i = 0; i < timesSize; i++) {
        result ^= times[i];
    }
    return result;
}

int main() {
    int times1[] = {5, 10, 5, 10, 15, 20, 20};
    int times2[] = {0, 2, 0, 2, 1};
    int times3[] = {3, 8, 3, 8, 12};
    
    printf("%d\n", findUniqueTime(times1, 7));  // 15
    printf("%d\n", findUniqueTime(times2, 5));  // 1
    printf("%d\n", findUniqueTime(times3, 5));  // 12
    
    return 0;
}

运行结果

相关推荐
wo_jack1 分钟前
C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?
数据结构·c++·面试·stl·list
zaizai10072 小时前
算法(左程云)1
数据结构
charliejohn3 小时前
计算机考研 408 数据结构 图论-关键路径
数据结构·图论
沐晓时光13 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
Zwawa17 小时前
C语言函数指针与宏实战:从回调、表驱动菜单到X-Macro,讲透嵌入式代码解耦
c语言·单片机·嵌入式
David猪大卫19 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger19 小时前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
vvilkim21 小时前
数据结构类型、区别与应用场景:一篇讲透选型逻辑
数据结构
安妮细水长流1 天前
ad7124
c语言·单片机