这是基于 LeetCode (#2419) 的一个问题 具有最大按位与的最长子数组
我不关心与问题相关的逻辑(我需要找到最大元素的最长链(数组的最大值))。这是我的解决方案 -
max_index = nums.index(max(nums))
max_val = max(nums)
ans, temp = 1, 1
for i in range(max_index+1, len(nums)):
if (nums[i]==max_val):
temp+=1
else:
ans = max(ans, temp)
temp=1
ans = max(ans, temp)
return ans
在数组长度相当大的测试用例之一中,这给我带来了错误的答案 -
预期的答案是 125,而我的代码获取的答案是 126。我的代码可能存在什么问题,导致它在大型测试用例中失败?我觉得我已经考虑了所有可能的边缘情况(数组末尾的最大元素链、等长链等)
更新问题中的代码
def longestSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
max_index = nums.index(max(nums))
max_val = max(nums)
ans, temp = 1, 1
for i in range(max_index+1, len(nums)):
if (nums[i]==max_val):
temp+=1
ans = max(ans, temp)
else:
temp=0
return ans
方法
如果可以这样做的话就可以简化
def longestSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
max_val = max(nums)
ans, temp = 0, 0
for num in nums:
if (num==max_val):
temp+=1
ans = max(ans, temp)
else:
temp=0
return ans