尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字

C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字 问题描述小M正在开发一个多任务下载器可以同时下载多个文件。每个文件都有一个唯一的下载速度整数但系统显示时不小心将每个速度值都重复显示了两次即除了一个独特的速度值外其他每个速度值都恰好出现两次。小M需要快速找出这个独特下载速度的文件以便优先处理它。要求设计一个算法在 O(n) 时间内找出独特的下载速度其中 n 是速度列表的长度。尽量减少额外空间的使用以优化下载器的性能。测试样例样例1输入speeds [5, 3, 5, 2, 3, 4, 4]输出2解释速度 2 只出现一次是独特的下载速度其他速度5、3、4都恰好出现两次。样例2输入speeds [10, 20, 10, 30, 20, 40, 40]输出30解释速度 30 只出现一次是独特的下载速度其他速度10、20、40都恰好出现两次。样例3输入speeds [1, 1, 2, 2, 3, 3, 4]输出4解释速度 4 只出现一次是独特的下载速度其他速度1、2、3都恰好出现两次。样例4输入speeds [5]输出5解释列表只有一个速度值因此 5 就是独特的下载速度。约束条件1 ≤ speeds.length ≤ 10010 ≤ speeds[i] ≤ 1000列表长度为奇数除了一个下载速度只出现一次外其余每个下载速度都恰好出现两次程序代码#include stdio.hint findUniqueSpeed(int* speeds, int speedsSize) {int result 0;for (int i 0; i speedsSize; i) {result ^ speeds[i];}return result;}int main() {int speeds1[] {5, 3, 5, 2, 3, 4, 4};int speeds2[] {10, 20, 10, 30, 20, 40, 40};int speeds3[] {1, 1, 2, 2, 3, 3, 4};int speeds4[] {5};printf(%d\n, findUniqueSpeed(speeds1, 7)); // 2printf(%d\n, findUniqueSpeed(speeds2, 7)); // 30printf(%d\n, findUniqueSpeed(speeds3, 7)); // 4printf(%d\n, findUniqueSpeed(speeds4, 1)); // 5return 0;}#include stdio.h int findUniqueSpeed(int* speeds, int speedsSize) { int result 0; for (int i 0; i speedsSize; i) { result ^ speeds[i]; } return result; } int main() { int speeds1[] {5, 3, 5, 2, 3, 4, 4}; int speeds2[] {10, 20, 10, 30, 20, 40, 40}; int speeds3[] {1, 1, 2, 2, 3, 3, 4}; int speeds4[] {5}; printf(%d\n, findUniqueSpeed(speeds1, 7)); // 2 printf(%d\n, findUniqueSpeed(speeds2, 7)); // 30 printf(%d\n, findUniqueSpeed(speeds3, 7)); // 4 printf(%d\n, findUniqueSpeed(speeds4, 1)); // 5 return 0; }运行结果
返回列表