我们可以很轻易的证明,一个满足题目条件的数组一定有以下特征:
-
数组中不能含有数字
0 -
数组中只能含有两种数
和
,且
,如果数组中含有另一种整数
,那么便可以通过排列
满足题目条件
根据上所述,我们可以用set容器的特性(去重)来解决该题,时间复杂度,空间复杂度
#include<iostream>
#include<set>
void set() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
}
void solve() {
int n;
std::cin >> n;
std::set<int>_set;
int x;
for (int i = 1; i <= n; i++) {
std::cin >> x;
if (x == 0) {
std::cout << "NO";
return;
}
_set.insert(x);
}
if (_set.size() == 2 && *_set.begin() + *_set.rbegin() == 0) std::cout << "NO";
else std::cout << "YES";
}
int main() {
set();
solve();
}

京公网安备 11010502036488号