统计数组中和为K的元素对的Python代码GFG报IndexError如何解决
错误原因
- 核心问题是方法参数传递顺序不匹配:
你定义的getPairsCount方法参数顺序为(self, arr, K, N),第二个参数是目标和K,第三个参数是数组长度N。但你在主逻辑调用时传入的参数是ob.getPairsCount(arr, n, k),把数组长度n传给了第二个参数K的位置,把目标和k传给了第三个参数N的位置。
此时方法内拿到的N实际是目标和K的值,当目标和K大于数组实际长度时,循环for i in range(0,N)会访问超过数组长度的下标,触发IndexError: list index out of range。 - 补充提示:你当前使用的暴力双循环解法时间复杂度为O(N²),如果GFG测试用例数据量较大,修复索引问题后仍可能出现超时,可改用哈希表统计元素出现次数的方案,将时间复杂度优化到O(N)。
修复方案
两种方案二选一即可,更推荐第二种,和GFG默认的参数顺序对齐避免后续出错:
方案1:调整调用时的参数顺序
将主逻辑中的调用代码修改为:
ans = ob.getPairsCount(arr, k, n)
方案2:调整方法定义的参数顺序
修改getPairsCount方法的参数顺序:
class Solution: def getPairsCount(self, arr, N, K): count = 0 for i in range(0,N): for j in range(i+1,N): if(arr[i]+arr[j]==K): count+=1 return count
内容的提问来源于stack exchange,提问作者Daya Yadav
相关产品推荐
相关产品推荐

