LintCode【简单】82. 落单的数。代码及思路
2018-02-08 16:28
337 查看
题目要求:
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例给出 [1,2,2,1,3,4,3],返回 4挑战 一次遍历,常数级的额外空间复杂度思路:
一次遍历,但是额外的空间复杂度是O(n)。申请动态容器vector ,遍历一次A,如果A[i]和recult里有一样的,就把recult里的删掉,如果没有删掉,就加进去。最后只剩一个,return 就行了。
class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &A) {
// write your code here
int i, j;
bool iserase;
vector<int> result;
for(i = 0; i < A.size(); i++){
iserase = false;
for(j = 0; j < result.size(); j++){
if(result[j] == A[i]){
cout<<result[j]<<" * ";
result.erase(result.begin()+j);
iserase = true;
break;
}
}
if(!iserase) result.push_back(A[i]);
}
cout<<result.size();
return result[0];
}
};
相关文章推荐
- LintCode【简单】55. 比较字符串 。代码及思路
- LintCode【简单】46. 主元素 。代码及思路
- LintCode【简单】167. 链表求和 。代码及思路
- LintCode【简单】69. 二叉树的层次遍历。代码及思路
- LintCode【简单】8. 旋转字符串 。代码及思路
- LintCode【简单】6. 合并排序数组 II,9. Fizz Buzz 问题。代码及思路 ——【vector用法】
- LintCode【简单】100. 删除排序数组中的重复数字。代码及思路
- LintCode【简单】2. 尾部的零 。代码及思路
- LintCode【简单】41. 最大子数组 。代码及思路
- LintCode【简单】53. 翻转字符串 。代码及思路
- LintCode【简单】97. 二叉树的最大深度 。代码及思路
- LintCode【简单】14. 二分查找 。代码及思路
- LintCode【简单】35. 翻转链表 。代码及思路
- LintCode【简单】13. 字符串查找 。代码及思路
- 【LintCode 简单】82. 落单的数
- LintCode【简单】101. 删除排序数组中的重复数字 II。代码及思路
- LintCode【简单】22. 平面列表 。代码及思路
- LintCode【简单】39. 恢复旋转排序数组 。代码及思路
- LintCode【简单】66. 二叉树的前,中,后序遍历。代码及思路
- LintCode【简单】80. 中位数。代码及思路