落单的数
来源:互联网 发布:城市网络交换平台 编辑:程序博客网 时间:2024/06/04 01:35
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例
给出 [1,2,2,1,3,4,3],返回 4
我的解题思路是:由于这一章是贪心算法,所以算法的时间复杂度是O(N)的,所以解决这个问题时候必须控制时间复杂度。根据我们之前学的异或运算符我们可以知道它在一排数中找到独一无二的一个数有独特的效果,只要有相同的数那么他们异或后的结果就是0,最后就剩下0和那个独一无二的数相异或,就等于那个独一无二的数了。
class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &A) {
// write your code here
int x=0;
for(int i=0;i<A.size();i++)
{
x^=A[i];
}
return x;
}
};
顺便也附上暴力解决此问题的方法:
class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &A) {
// write your code here
int a[10000];
int k;
for(int i=0;i<A.size();i++)
{
a[i]=A[i];
}
int count=0;
for(int i=0;i<A.size();i++)
{
for(int l=0;l<A.size();l++)
{
if(A[i]==a[l])
count++;
}
if(count==1)
{
k=A[i];
}
count=0;
}
return k;
}
};
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &A) {
// write your code here
int a[10000];
int k;
for(int i=0;i<A.size();i++)
{
a[i]=A[i];
}
int count=0;
for(int i=0;i<A.size();i++)
{
for(int l=0;l<A.size();l++)
{
if(A[i]==a[l])
count++;
}
if(count==1)
{
k=A[i];
}
count=0;
}
return k;
}
};
阅读全文
0 0
- 落单的数
- LinCode落单的数
- 落单的数
- 题目:落单的数
- 落单的数 III
- 落单的数 II
- 落单的数
- 落单的数
- LinCode落单的数
- LintCode_82_落单的数
- lintcode ----落单的数
- LintCode 落单的数
- 落单的数
- 落单的数II
- 落单的数 III
- 落单的数
- 落单的数 II
- 落单的数 III
- 实例4-5 实现联动打的下拉列表DropDownList控件
- Ruby简介
- Pspice元件库说明
- vuex
- 小希的迷宫(第二次遇到了)
- 落单的数
- 归并排序
- shell脚本定时kill超过1小时的指定命令
- 非对称加密算法(3):ElGamal
- 用VS编写第一个C++程序
- Javascript性能优化(三)
- Set 接口常用子类及其特点
- 渗透测试工具sqlmap基础教程
- 发布自己的项目到Cocoapods开源库