技术笔试题(一)
#include <iostream>
using namespace std;
int hash_table[100];
bool judge(int *a, int len, int x)
{
memset(hash_table, 0, sizeof(hash_table));
for (int i=0; i<len; ++i)
{
hash_table[x - a[i]] = 1;
}
for (int i=0; i<len; ++i)
{
if (hash_table[i] == 1)
{
return true;
}
}
return false;
}
int main()
{
int len = 10;
int a[10] = {1, 3, 5, 7, 9, 4, 2, 8, 10, 6};
int x = 19;
if (judge(a, len, x))
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
system("pause");
return 0;
}
本题解决方法:hash table。
时间复杂度:O(N)
空间复杂度:O(N)
#include <iostream>
using namespace std;
int find(int *a, int n)
{
int t = a[0];
int count = 0;
for (int i=0; i<n; ++i)
{
if (count == 0)
{
t = a[i];
count = 1;
continue;
}
else
{
if (a[i] == t)
{
count++;
}
else
{
count--;
}
}
}
return t;
}
int main()
{
int n = 10;
int a[10] = {1, 3, 2, 3, 3, 4, 3, 3, 3, 6};
cout<<find(a, n)<<endl;
system("pause");
return 0;
}
Time Complexity: O(n)
Space Complexity:O(1)