本帖最后由 匿名 于 2023-11-14 21:04 编辑
HackerRank, 2 coding tasks, 66 minutes.
的最大长度,以 x 队成员 i 为结尾(并包括 i)。时间复杂度为 O(n)。- def getMaxSubarrayLen(team_a, team_b):
- n = len(team_a)
- DP_a = [None] * n
- DP_b = [None] * n
- DP_a[0] = DP_b[0] = 1
- for i in range(1, n):
- DP_a[i] = max(
- 1,
- DP_a[i - 1] + 1 if team_a[i] >= team_a[i - 1] else -inf,
- DP_b[i - 1] + 1 if team_a[i] >= team_b[i - 1] else -inf,
- )
- DP_b[i] = max(
- 1,
- DP_a[i - 1] + 1 if team_b[i] >= team_a[i - 1] else -inf,
- DP_b[i - 1] + 1 if team_b[i] >= team_b[i - 1] else -inf,
- )
- return max(*DP_a, *DP_b)
复制代码 |