LeetCode 好数对数目问题:代码输出不符预期求排查
问题排查与修复
你的代码逻辑存在一个关键错误:在判断nums[l] == nums[r]时额外加了r != len(nums) -1的限制,这会导致当r指向数组最后一个元素时,即使nums[l]和nums[r]相等,也不会被计入count。
拿输入[1,2,3,1,1,3]举例,当l=2(对应元素3)、r=5(对应元素3)时,明明满足条件,但因为r是最后一个元素,你的第一个if条件不成立,直接进入elif r == len(nums)-1分支,跳过了计数,这就漏掉了(2,5)这个好数对,导致最终结果少1。
修复后的代码
def numIdenticalPairs(self, nums: List[int]) -> int: count = 0 l, r = 0, 1 while l <= len(nums) - 2: if nums[l] == nums[r]: count += 1 if r == len(nums) - 1: l += 1 r = l + 1 else: r += 1 return count
逻辑说明
- 去掉
r != len(nums)-1的限制,只要nums[l] == nums[r]就计数 - 不管是否相等,只要r没到数组末尾就继续右移;r到末尾时,l右移一位,r重置为l+1
这样就能正确统计所有符合条件的好数对,输入[1,2,3,1,1,3]会得到预期的4。
内容的提问来源于stack exchange,提问作者Minh
相关产品推荐
相关产品推荐

