考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <bits/stdc++.h>
using namespace std;
const int LEN = 1001;
int main() { int n, arr[LEN], ans[LEN]; cin >> n; for (int i = 0; i < n; ++i) cin >> arr[i]; for (int i = 0; i < n; ++i) arr[i] = abs(arr[i + 1] - arr[i]); sort(arr, arr + n - 1); for (int i = 0, diff = 1; i < n - 1; ++i, ++diff) { if (arr[i] != diff) { cout << "Not jolly"; return 0; } } cout << "Jolly"; return 0; }
|
思路
n个元素共有n-1个相邻元素差,而题目刚好问你元素差是否都在[1, n-1]
范围内
所以先求出差分数组,共n-1个元素;然后对差分数组进行排序,最后以下标从低到高的顺序逐位判断即可