** 更新:这是我的一个拼写错误,但我整个早上都在努力解决这个问题。有时,如此明显的事情即使就在您面前,也可能让您无法理解。
我已经解决了 LeetCode 上的一个问题,并且尝试运行我在本地为该问题开发的相同解决方案。我看到一个奇怪的问题,LeetCode 完美地运行了我的解决方案,并且所有测试用例都通过了,但是当我运行相同的解决方案时,只需稍微修改一下以在命令行中提供输入并显示结果,我就不会得到相同的输出。
调试后,我发现 if 语句的“not in”部分与 LeetCode 网站的工作方式不同。我希望能得到对这个问题的解释,因为我通常在本地编写 LeetCode 问题,并且不确定是什么导致了这个问题。
Python版本:Python 3.11.5
电脑:Windows 11
LeetCode解决方案:
class Solution:
def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
nums1 = set(nums1)
nums2 = set(nums2)
tmp1 = []
tmp2 = []
for i in nums1:
if i not in nums2:
tmp1.append(i)
for i in nums2:
if i not in nums1:
tmp2.append(i)
return [tmp1, tmp2]
输出:[[1,3],[4,6]]
本地解决方案:
class Solution:
def findDifference(self, nums1, nums2):
nums1 = set(nums1)
nums2 = set(nums2)
tmp1 = []
tmp2 = []
for i in nums1:
if i not in nums2:
tmp1.append(i)
for i in nums2:
if i not in nums1:
tmp2.append(i)
return [tmp1, tmp2]
nums1 = [1,2,3]
nums2 = [2,4,6]
execute = Solution()
print(execute.findDifference(nums1, nums1))
输出:[[], []]
感谢您提前回复。
您的打印语句中有一个拼写错误,两个参数都是nums1:
print(execute.findDifference(nums1, nums1))
应该是:
print(execute.findDifference(nums1, nums2))