insert
boolean insert(int x) {
for (int i = m; i >= 0; i--) {//按位枚举
if ((x >> i & 1) == 1) {//如果当前位为1
if (a[i] == 0) {//这个位置没有被占用
a[i] = x;//占用
return true;
}
x ^= a[i];//维持梯形结构
}
}
return false;//说明可以被表示出来
}
查询
返回x^y的最大值
int query(int x) {
for (int i = m - 1; i >= 0; i--) {
x = Math.max(x, x ^ a[i]);
}
return x;
}
建议做点习题: https://www.acwing.com/blog/content/75966/