展览馆展出来自 13 个朝代的文物,每排展柜展出 5 个文物。某排文物的摆放情况记录于数组 places,其中 places[i] 表示处于第 i 位文物的所属朝代编号。其中,编号为 0 的朝代表示未知朝代。请判断并返回这排文物的所属朝代编号是否能够视为连续的五个朝代(如遇未知朝代可算作连续情况)。

示例 1:

**输入:**places = [0, 6, 9, 0, 7]
**输出:**True

示例 2:

**输入:**places = [7, 8, 9, 10, 11]
**输出:**True

提示:

places.length = 5

0 <= places[i] <= 13

连续五个数,很容易想到 max-min=4 ,0是万能牌,每多一个0条件就会更宽松

所以如果没有重复的数max-min只需要小于5就行,即对于0只要排除就行,题目没有说朝代不重复,所以如果有重复朝代需要直接返回false。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
bool checkDynasty(vector<int> &places) {
int maxP = 0;
int minP = 14;
vector<int> flag(15, 0);
for (int i : places) {
if (i != 0) {
if (flag[i])
return false;
flag[i] = 1;
maxP = max(maxP, i);
minP = min(minP, i);
}
}
if (maxP - minP < 5)
return true;
return false;
}
};