【LeetCode】0136. 只出现一次的数字
题目要求
- 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。
图解示例
算法思想
方法一:使用map记录的方式
- 遍历整个列表,如果key存在,对应的value为2;如果key不存在,对应的value为1
- 遍历整个map,然后得到value为1的key就是结果
方法二:使用异或的方法
异或有如下计算法则:
- a ⊕ a = 0(任何一个值异或自己等于0)
- a ⊕ 0 = a(任何一个值异或0等于它本身)
- a ⊕ b ⊕ a = b ⊕ a ⊕ a = b ⊕ (a ⊕ a) = b ⊕ 0 = b(异或与加法交换律类似)
- 于是就有上述图解了
完整代码
方法一:
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. 只出现一次的数字相关推荐
- LeetCode 260. 只出现一次的数字 III(位运算)
1. 题目 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 :输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结 ...
- LeetCode:136. 只出现一次的数字
136. 只出现一次的数字 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 1.法一: 遍历 nums\text{nums}nums 中的每一个元素 如果某个 nums\text{nums} ...
- 【leetcode】只出现一次的数字(位运算)
LeetCode136:只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 解题思路: 这里可以使用异或运算.即两个相同的数字异或 ...
- Java实现 LeetCode 136 只出现一次的数字
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...
- Java实现 LeetCode 260 只出现一次的数字 III(三)
260. 只出现一次的数字 III 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出 ...
- LeetCode[136.只出现一次的数字](简单) -- java
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [2 ...
- LeetCode 136. 只出现一次的数字(异或^)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你 ...
- Leetcode 136. 只出现一次的数字 解题思路及C++实现
解题思路: 利用异或操作的性质: 1.恒定律:A ^ 0 = A 2.归零率:A ^ A = 0 3.交换律:A ^ B = B ^ A 4.结合律:(A ^ B) ^ C = A ^ (B ^ C) ...
- leetcode 136. 只出现一次的数字 c语言
题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗?示例 1: 输入: ...
最新文章
- photoshop cs5 中 复制图层的快捷键是那个?
- CSS的overflow属性:显示 隐藏 滚动显示 自动显示 继承
- DHCP Option 60 的理解
- spring-beans模块分析
- 系统启动 之 Linux系统启动概述(2)
- 逍遥自动秒收录导航网源码绿色版+全站SEO优化
- ListView原理
- Leetcode每日一题:36.valid-sudoku(有效的数独)
- python编译软件排行榜_4 个快速的 Python 编译器 for 2018
- 回答问题人工智能源码_回答21个最受欢迎的人工智能问题
- C++实现RPG小游戏(彩色版)
- 根据经纬度坐标点返回所在行政区域实现
- 硬件和软件的32位与64位区别
- ddl是什么意思网络语_ddl是什么
- 随手口袋记APP支持
- iPad pro能运行c语言吗,办公实战 iPad Pro还是洗洗睡吧_平板电脑评测-中关村在线...
- 转:C++读取EOF文件
- 土是独体字结构吗_发是独体字结构吗
- 公司股权分配协议范文
- 巨控GRM110系列的LORA无线通信模块,短距离无线数据传输,巨控无线433无线通信技术