题目要求

  1. 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。

图解示例

算法思想

方法一:使用map记录的方式

  1. 遍历整个列表,如果key存在,对应的value为2;如果key不存在,对应的value为1
  2. 遍历整个map,然后得到value为1的key就是结果

方法二:使用异或的方法

异或有如下计算法则:

  1. a ⊕ a = 0(任何一个值异或自己等于0)
  2. a ⊕ 0 = a(任何一个值异或0等于它本身)
  3. a ⊕ b ⊕ a = b ⊕ a ⊕ a = b ⊕ (a ⊕ a) = b ⊕ 0 = b(异或与加法交换律类似)
  4. 于是就有上述图解了

完整代码

方法一:

class Solution {
public:int singleNumber(vector<int>& nums) {map<int,int> hash_map;for(int i = 0; i < nums.size(); i++) {if(hash_map.find(nums[i])!=hash_map.end()) {hash_map[nums[i]] = 2;} else {hash_map[nums[i]] = 1;}}map<int,int>::iterator it;for(it = hash_map.begin(); it != hash_map.end(); it++) {if(it->second==1) return it->first;}return 0;}
};

方法二:

class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for (auto e: nums) ans ^= e;return ans;}
};

(PS:看到这个解法,我当时就笑了)

设计分析

方法一:

时间复杂度:O(3n/2)~O(n)

空间复杂度:O(n/2)~O(n)

方法二:

时间复杂度:O(n)

空间复杂度:O(1)

提交结果

方法一:

方法二:

若有其他解法,欢迎评论区补充。

【LeetCode】0136. 只出现一次的数字相关推荐

  1. LeetCode 260. 只出现一次的数字 III(位运算)

    1. 题目 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 :输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结 ...

  2. LeetCode:136. 只出现一次的数字

    136. 只出现一次的数字 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 1.法一: 遍历 nums\text{nums}nums 中的每一个元素 如果某个 nums\text{nums} ...

  3. 【leetcode】只出现一次的数字(位运算)

    LeetCode136:只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 解题思路: 这里可以使用异或运算.即两个相同的数字异或 ...

  4. Java实现 LeetCode 136 只出现一次的数字

    136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...

  5. Java实现 LeetCode 260 只出现一次的数字 III(三)

    260. 只出现一次的数字 III 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出 ...

  6. LeetCode[136.只出现一次的数字](简单) -- java

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [2 ...

  7. LeetCode 136. 只出现一次的数字(异或^)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你 ...

  8. Leetcode 136. 只出现一次的数字 解题思路及C++实现

    解题思路: 利用异或操作的性质: 1.恒定律:A ^ 0 = A 2.归零率:A ^ A = 0 3.交换律:A ^ B = B ^ A 4.结合律:(A ^ B) ^ C = A ^ (B ^ C) ...

  9. leetcode 136. 只出现一次的数字 c语言

    题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗?示例 1: 输入: ...

最新文章

  1. photoshop cs5 中 复制图层的快捷键是那个?
  2. CSS的overflow属性:显示 隐藏 滚动显示 自动显示 继承
  3. DHCP Option 60 的理解
  4. spring-beans模块分析
  5. 系统启动 之 Linux系统启动概述(2)
  6. 逍遥自动秒收录导航网源码绿色版+全站SEO优化
  7. ListView原理
  8. Leetcode每日一题:36.valid-sudoku(有效的数独)
  9. python编译软件排行榜_4 个快速的 Python 编译器 for 2018
  10. 回答问题人工智能源码_回答21个最受欢迎的人工智能问题
  11. C++实现RPG小游戏(彩色版)
  12. 根据经纬度坐标点返回所在行政区域实现
  13. 硬件和软件的32位与64位区别
  14. ddl是什么意思网络语_ddl是什么
  15. 随手口袋记APP支持
  16. iPad pro能运行c语言吗,办公实战 iPad Pro还是洗洗睡吧_平板电脑评测-中关村在线...
  17. 转:C++读取EOF文件
  18. 土是独体字结构吗_发是独体字结构吗
  19. 公司股权分配协议范文
  20. 巨控GRM110系列的LORA无线通信模块,短距离无线数据传输,巨控无线433无线通信技术

热门文章

  1. hiberante 二级缓存设置
  2. 基于用户评价的评分模型
  3. filter,map,reduce,apply函数
  4. 区块链BaaS云服务(34)新加坡艾达链ASC
  5. 攻防世界Reverse第十二题maze
  6. 什么是informer机制
  7. Harbor2.2.1配置(trivy扫描器、镜像签名)
  8. 【django】如何搭建虚拟环境(解决mkvirtualenv:未找到命令)
  9. [ARM-assembly]-ARMV9-A64指令汇总-指令速查
  10. scrapy详解及主要应用场景