次の問題があります: 整数配列 (最大サイズ 50000) が与えられた場合、次のような最大 X を見つける必要があります。
X = a[p] ^ a[p+1] ^ ... ... ^ a[q] for some p,q (p<=q)
また、Xの最小値を見つける必要があります。
私はこのプロセスを試しました、
sum[i] = a[0] ^ a[1] ^ ... ... ^ a[i] for some i .
O(n)で事前に計算し、
次に、一部の X の値p,q(p<=q)
は、
X = sum[q] ^ sum[p-1]
MaxAns = Max of X for every pair of p,q (p<=q)
MinAns = Min of X for every pair of p,q (p<=q)
しかし、このプロセスは O(n^2) です。
O(n^2) アルゴリズムなしで、より効率的な方法でそれを行うにはどうすればよいですか?