以下是问题的链接 https://www.hackerrank.com/challenges/and-xor-or/copy-from/16519519 我已经实现了O(n)解决方案,看起来没问题(没有TLE和29个测试卡从32中传出)。但我的解决方案是一些测试版失败,我无法找到错误,当然我错过了一些角落案例。任何暗示都会有很大的帮助。我已经发布了我已经运行并提交的代码。
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <stack>
#define ul unsigned long
using namespace std;
ul comp(ul a, ul b){
ul result = ((a&b)^(a|b))&(a^b);
return result;
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n;
cin>>n;
vector<ul>ip(n);
for(int i=0;i<n;i++)
cin>>ip[i];
stack<ul>st;
ul result=0;
for(int i=0;i<n;i++){
if(st.empty())
st.push(ip[i]);
else{
result=max(result,comp(st.top(),ip[i]));
while(!st.empty() && st.top()>ip[i]){
result=max(result,comp(st.top(),ip[i]));
st.pop();
}
st.push(ip[i]);
}
}
cout<<result;
return 0;
}