头歌 2022 春第一期 Greeker's party 13 周
第 1 关:疫情拐点 I
疫情已经持续数年。最近,A 国再次出现新一轮疫情高峰,B 团队正在尝试寻找拐点。该团队对拐点有如下定义:对于连续的三天,即第
j
天,j + 1
天,j + 2
天,报告的感染者数字 p i p_i pi 满足 p j + 1 > p j p_{j + 1} \gt p_j pj+1>pj 且 p j + 1 > p j + 2 p_{j + 1} \gt p_{j + 2} pj+1>pj+2。如果存在拐点,则输出"True"
,否则输出"False"
。
直来直去,判断每一个 可能 是拐点的点(即下标范围在 1 ~ (m - 1)
)是不是真正的拐点。核心代码如下:
bool flag = false;
for (int i = 1; i < m - 1; i++)
if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) {
flag = true;
break;
};
cout << (flag ? "True" : "False") << ' ';
时间复杂度是 O ( m ) O(m)