-
Notifications
You must be signed in to change notification settings - Fork 382
Closed
Description
LeetCode 用户名
gauss
问题号码、标题和链接
Bug Category
缺少测试用例 (由于缺少测试用例而接受不正确/低效的代码)
描述
该题目缺少特殊测试用例,导致部分代码尽管没有判断"严格单调递增“和”严格单调递减“也还可以通过
例如,对于测试用例:nums=[1,2,3,3,3,4,5,4,4,3,2,4,2,4],下面代码会解答错误,但是却能通过原所有测试用例:
class Solution:
def maxSumTrionic(self, nums: List[int]) -> int:
n = len(nums)
preSum = [0]*(n+1)
preSum[1] = nums[0]
d = [0]*(n-1)
for i in range(1, n):
preSum[i+1] = preSum[i]+nums[i]
d[i-1] = nums[i]-nums[i-1]
indx = [0]
for i in range(n-2):
if d[i] > 0 and d[i+1] < 0:
indx.append(i+1)
elif d[i] < 0 and d[i+1] > 0:
indx.append(i+1)
indx.append(n-1)
if d[0] < 0:
indx.pop(0)
res = -float("inf")
for i in range(0, len(indx)-3, 2):
a, b, c, d = indx[i], indx[i+1], indx[i+2], indx[i+3]
for j in range(a, b):
res = max(res, preSum[c+2]-preSum[j])
res = max(res, preSum[d+1]-preSum[j])
return res你使用的语言
Python/Python3
你提交或者运行的代码
class Solution:
def maxSumTrionic(self, nums: List[int]) -> int:
n = len(nums)
preSum = [0]*(n+1)
preSum[1] = nums[0]
d = [0]*(n-1)
for i in range(1, n):
preSum[i+1] = preSum[i]+nums[i]
d[i-1] = nums[i]-nums[i-1]
preZero = [0]*(n)
for i in range(n-1):
preZero[i+1] = preZero[i]+(d[i] == 0)
indx = [0]
for i in range(n-2):
if d[i] > 0 and d[i+1] < 0:
indx.append(i+1)
elif d[i] < 0 and d[i+1] > 0:
indx.append(i+1)
indx.append(n-1)
if d[0] < 0:
indx.pop(0)
res = -float("inf")
for i in range(0, len(indx)-3, 2):
a, b, c, e = indx[i], indx[i+1], indx[i+2], indx[i+3]
for j in range(a, b):
if preZero[e]-preZero[j] == 0:
res = max(res, preSum[e+1]-preSum[j])
if preZero[c+1]-preZero[j] == 0:
res = max(res, preSum[c+2]-preSum[j])
return res期望行为
对所有选手的通过代码进行重判
屏幕截图
No response
额外的上下文
No response