整数の非空の配列を考えると、すべての要素が1以外の二回表示されます。その単一のものを探します。
注意:
あなたのアルゴリズムは線形ランタイムの複雑さを持っている必要があります。あなたは余分なメモリを使用せずにそれを実装できますか?
ヒント:
あなたはこの問題を解決するために、ビット単位を使用することができます。
インタフェース定義機能:
ロングロングsingleNumber(ロングロングNUMS *、int型numsSize)。
審判試験サンプルプログラム:
書式#include <stdio.hに>
に#define MAXN 1000005
長い長いNUMS [MAXN]。
長い長いsingleNumber(長い長い* NUMS、INT numsSize)。
INTメイン()
{
int型N;
scanf関数( "%のD"、&N)。
以下のために(INT iが= 0; I <N; I ++)
のscanf( "%のLLD"、&NUMS [I])。
printf( "%のLLD"、singleNumber(NUMS、N))。
0を返します。
}
/ *ここに答えを記入してください* /
入力サンプル1:
3
2 2 1
出力サンプル1:
1
入力サンプル2:
5
4. 1. 1 2 2。
出力サンプル2:
4
long long singleNumber(long long* nums, int numsSize)
{
int i;
long long ans = nums[0];
for (i = 1; i < numsSize; i++)
ans = ans ^ nums[i];
return ans;
}