LeetCode 1588题:奇数长度子数组求和代码错误排查求助
排查LeetCode 1588. Sum of All Odd Length Subarrays代码错误
题目描述
给定正整数数组arr,返回所有可能的奇数长度子数组(子数组为数组的连续子序列)的和。
我的尝试代码
class Solution: def sumOddLengthSubarrays(self, arr: List[int]) -> int: sub_array_size = 1 odd_array_sum = 0 index = 0 while sub_array_size <= len(arr): for element in arr: index = arr.index(element) if index <= (len(arr) - sub_array_size): for i in range(sub_array_size): odd_array_sum += arr[index + i] else: continue sub_array_size += 2 return odd_array_sum
问题现象
这段代码在部分测试用例中可行,但多数用例失败,例如输入arr = [7, 6, 8, 6]时结果出错。
我的思路
- 从长度为1的子数组开始,每次将子数组长度增加2,直到长度超过原数组长度为止。
- 遍历数组中的每个元素,若当前元素的索引足够小(能生成对应奇数长度的子数组),就把该子数组的所有元素累加到总和里;否则跳过。
- 考虑过把
else里的continue改成break来优化性能——因为当某个元素的索引不符合条件时,后面元素的索引肯定也不符合,但不确定break会不会跳过sub_array_size += 2的执行,所以暂时保留了continue。
我无法找出代码错误所在,希望排查问题而非直接获取解决方案。
内容的提问来源于stack exchange,提问作者idk31909310
相关产品推荐
相关产品推荐

