[136]Single Number
2015-10-13 21:05
295 查看
【题目阐述】
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?
【思路】
1.先将nums排序,然后从第一个数开始跟自己右边的数比较是否相等,不等即为答案,相等则跳过这两个从后面的继续比较。
2.这个是看了discuss的提示,利用了相同的数异或为0,不同的数异或为1的性质。
3.遍历vector,如果在map中没有找到,就加到map中,反之则说明这个数有重复,把这个数删掉。
【代码】
1.
2.
3.
class Solution {
public:
int singleNumber(vector<int>& nums) {
map<int,int> m;
for(int i=0;i<nums.size();i++){
if(m.find(nums[i])==m.end()){
m.insert(pair<int,int>(nums[i],nums[i]));
}
else{
m.erase(m.find(nums[i]));
}
}
return m.begin()->first;
}
};
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?
【思路】
1.先将nums排序,然后从第一个数开始跟自己右边的数比较是否相等,不等即为答案,相等则跳过这两个从后面的继续比较。
2.这个是看了discuss的提示,利用了相同的数异或为0,不同的数异或为1的性质。
3.遍历vector,如果在map中没有找到,就加到map中,反之则说明这个数有重复,把这个数删掉。
【代码】
1.
class Solution { public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i=0;i<nums.size()-1;i++){ if(nums[i]==nums[i+1]) i++; else return nums[i]; } return nums[nums.size()-1]; } };
2.
class Solution { public: int singleNumber(vector<int>& nums) { int ans=nums[0]; int n=nums.size(); for(int i=1;i<n;i++){ ans^=nums[i]; } return ans; } };
3.
class Solution {
public:
int singleNumber(vector<int>& nums) {
map<int,int> m;
for(int i=0;i<nums.size();i++){
if(m.find(nums[i])==m.end()){
m.insert(pair<int,int>(nums[i],nums[i]));
}
else{
m.erase(m.find(nums[i]));
}
}
return m.begin()->first;
}
};
相关文章推荐
- Hibenrate Search中基础查询解析
- Apache Spark入门攻略
- Linux SVNserver建立
- iOS多线程常用类说明--备用参考
- OC的冒泡排序
- 地图沿直线轨迹运动
- python中结巴分词快速入门
- Java语法糖3:泛型
- 【SQL】10g字符串处理函数regexp_count
- Javascript基础(一)
- pandas库生成数据透视表
- 【最小生成树+二分】bzoj1196 公路修建问题
- 用proxool配置数据库连接池步骤(自写管理类配置)
- 游戏编程大师技巧—windows程序的基本构造
- IntelliJ IDEA 14 注册码及注册码生成器
- brew-cask之本地安装应用
- Windows Opencv-3.0 + Python-2.7.10 配置(numpy-1.8.1-64位)
- 测试整理
- linux rmdir和rm的区别
- 【bzoj3670】【NOI2014】【动物园】【kmp+dp】