[LeetCode]136 单一的数字
来源:互联网 发布:rsa加密算法 c语言 编辑:程序博客网 时间:2024/05/18 00:23
Single Number(单一的数字)
【难度:Medium】
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
给定一整数数组,除了唯一的一个数之外其他的数字均出现两次,找到这个数字。时间复杂度限制为O(n),能否不使用额外空间来完成?
解题思路
根据题意很容易想到的一个方法就是统计每个数字出现的次数,然后在统计的结果中找到次数为1的数字。但是这种方法在样例很大时会超时。
然后我们知道异或(XOR)基本运算性质:
a^a = 0,a^0 = a, a^b^a = a^a^b = 0^b = b
那么解法显而易见了:一趟遍历,将所有数字进行异或,最后结果就是单一的数字。
C++代码如下:
class Solution {public: int singleNumber(vector<int>& nums) { int ans = 0; for (int i = 0; i < nums.size(); i++) ans ^= nums[i]; return ans; }};
还有一种解法是使用数据结构set,由于set自带去重功能,那么在nums[i]时,若在set中不存在,则insert;若已存在,则remove。最后set中只剩下单一的数字。该方法耗时较高因为涉及到了查找方面。
C++代码如下:
class Solution {public: int singleNumber(vector<int>& nums) { set<int> ans; for(int i = 0;i < nums.size();++i){ if(ans.find(nums[i]) == ans.end()) ans.insert(nums[i]); else ans.erase(nums[i]); } auto it = ans.begin(); return *it; }};
0 0
- [LeetCode]136 单一的数字
- 136. Single Number 求数组中单一的数字
- [LeetCode]268 消失的数字
- leetcode-65-有效的数字
- [数学理论]单一数字评估指标
- Leetcode 136 Single Number 仅出现一次的数字
- LeetCode 136 Single Number(只出现一次的数字)
- LeetCode 136 Single Number 出现一次的数字
- 单一登陆的例子
- 单一矩阵的运算
- 单一文件的断点续传
- leetcode----数字
- php单一接口的实现
- c#委托----单一的委托
- 单一MDF文件的还原
- 单一入口文件的定义
- [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- STM32F0多路ADC采样中的BUG和解决方案
- hadoop错误-YarnException: Unauthorized request to start container
- java下的IO操作
- 简单明了的AIDL使用
- 俄罗斯发现铜纳米光子元件可实现低成本的CMOS兼容
- [LeetCode]136 单一的数字
- 蔡宁宁
- PHP对象赋值与克隆
- PrimoCache2.2.0汉化程序与2.0.0的交叉使用
- NYOJ 开心的小明
- Git教程
- postgresql自动提交的问题
- UIView设置背景图片
- android布局之二:布局复用