news 2026/5/11 16:42:01

19 . 只出现一次的数字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
19 . 只出现一次的数字

题目介绍

给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

提示:

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。
class Solution { public: int singleNumber(vector<int>& nums) { } };

全文1300字,阅读+思考 8min

原题链接:136. 只出现一次的数字 - 力扣(LeetCode)


解析

1 . 本题需求很简单,即给你一个数组(vector<int>) ,找出数组中只出现一次的数字并返回

且其余数字都出现了两次

哈希

1 . 对于要找出单身狗数字,很容易想到的思路:遍历数组一遍,统计每个数字出现的次数

2 . 只需要统计一遍,就能知道每个数字出现多少遍。

代码初步构建:

class Solution { public: int singleNumber(vector<int>& nums) { map<int,int> mp;// 数字 ,出现的次数 for(auto e:nums) { mp[e]++; } //统计完毕 } };

3 . 已经统计好每个数字出现的次数,那么再遍历一遍数组

4 . 一旦遇到次数为1(即mp[e] == 1)就立刻返回e

class Solution { public: int singleNumber(vector<int>& nums) { map<int,int> mp;// 数字 ,出现的次数 for(auto e:nums) { mp[e]++; } for(auto e:nums) { if(mp[e] == 1) return e; } return 0;//为了编译通过,需要再加一个return } };

注:

1 . 这个方法逻辑和写法没有问题

2 . 可使用了O(n)的空间开销而非常量,但时间开销符合要求O(n)

异或

此方法重点掌握——

1 . 回忆:异或。全称:按位异或——二进制位运算之一

2 . 异或的本质 : 模二乘法运算

a . 0 ^ 0 = 0 0 ^ 1 = 1 1^1 = 0

b . a ^ 0 = a a ^ a = 0;

3 . 我们正是利用”b中式子”完成需求

a . 当给出的数组都是成双成对的数字,那么可想而知:将所有数字进行异或结果为0

b , 异或运算与顺序无关,它只与参与运算的位有关

c . 当数组中出现唯一一个单身狗数字,那么 0 ^ singleDog == singleDog

d. 所以:这个singleDog就是将所有数组异或之后的结果

代码呼之欲出:

class Solution { public: int singleNumber(vector<int>& nums) { int sigledog = 0;// 设置单身狗的初始值为0,因为0和任何数异或都保持为该数 for(auto& e:nums) { sigledog ^= e; } return sigledog; } };

总结以及完整参考代码

class Solution { public: int singleNumber(vector<int>& nums) { map<int,int> mp;// 数字 ,出现的次数 for(auto e:nums) { mp[e]++; } for(auto e:nums) { if(mp[e] == 1) return e; } } };
class Solution { public: int singleNumber(vector<int>& nums) { int sigledog = 0;// 设置单身狗的初始值为0,因为0和任何数异或都保持为该数 for(auto& e:nums) { sigledog ^= e; } return sigledog; } };

本周其他算法一见:

15 . 有效的括号-CSDN博客

16 . 买卖股票的最佳时机-CSDN博客

17 . 爬楼梯-CSDN博客

18 . 杨辉三角-CSDN博客

20 . 多数元素-CSDN博客

赶快动起手来吧

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 14:58:22

第四周算法清单

博主深然觉得在每篇博客后标注&#xff0c;总觉得效率不高。所以以后每周更新&#xff0c;都会附加一篇《清单》。 有了清单&#xff0c;只需要打开清单&#xff0c;然后再单开一个题面。不需要频繁从一个页面跳转…… 是不是很贴心 本周算法清单&#xff1a; 15 . 有效的括…

作者头像 李华
网站建设 2026/5/11 16:41:32

DeepSeek-V3:开源大模型的性能突破与行业影响

导语 【免费下载链接】DeepSeek-V3 DeepSeek-V3&#xff1a;强大开源的混合专家模型&#xff0c;671B总参数&#xff0c;激活37B&#xff0c;采用多头潜在注意力机制与DeepSeekMoE架构&#xff0c;训练高效、成本低&#xff0c;性能卓越&#xff0c;开源界表现领先&#xff0c;…

作者头像 李华
网站建设 2026/5/5 21:13:33

IATF16949标准完整指南:汽车行业质量管理的终极解决方案

IATF16949标准完整指南&#xff1a;汽车行业质量管理的终极解决方案 【免费下载链接】IATF16949-2016标准中文版下载 IATF16949-2016标准中文版下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/0f5f4 在汽车制造业竞争日益激烈的今天&#xff0…

作者头像 李华
网站建设 2026/5/9 18:27:54

终极深空摄影指南:DeepSkyStacker新手完全教程

终极深空摄影指南&#xff1a;DeepSkyStacker新手完全教程 【免费下载链接】DSS DeepSkyStacker 项目地址: https://gitcode.com/gh_mirrors/ds/DSS &#x1f680; 开启宇宙探索之旅&#xff01; 深空摄影的魅力在于捕捉遥远星系的壮丽景象&#xff0c;但单张照片往往因…

作者头像 李华
网站建设 2026/5/10 5:16:12

HyperLPR深度学习车牌识别框架的架构设计与性能优化深度解析

HyperLPR深度学习车牌识别框架的架构设计与性能优化深度解析 【免费下载链接】HyperLPR 基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework. 项目地址: https://gitcode.com/gh_mirrors/hy/HyperLPR 在智能交通系统快速发展…

作者头像 李华
网站建设 2026/5/10 7:18:11

60、事件驱动的套接字程序与CGI编程

事件驱动的套接字程序与CGI编程 1. 底层编程的复杂性与测试 在底层进行网络编程会带来诸多复杂问题,例如示例20 - 6及其数据结构就体现了这种复杂性。可以在终端窗口运行示例20 - 6的服务器,然后多次运行示例20 - 2。还可以在其他终端窗口使用 telnet localhost 8881 (或…

作者头像 李华