You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何打印不同类中LeetCode两数之和解法函数的返回结果

问题根因
  • 你当前仅完成了Solution1、Solution2的类实例化操作,没有调用实例下封装的twoSum_BF、twoSum_Dict业务方法,直接打印类实例只会输出对象的内存地址,无法得到两数之和的计算结果
  • 类构造方法__init__中接收的x、y参数没有被两个求和方法用到,属于冗余参数
最小改动修复方案

仅修改你代码末尾的打印逻辑,补充类方法调用即可正常输出结果:

x = [2, 7, 11, 15]
y = 9
print("暴力破解法返回结果:")
BF = Solution1(x, y)
# 调用实例的twoSum_BF方法,传入数组和目标值参数
print(BF.twoSum_BF(x, y))

print("字典哈希法返回结果:")
Dict = Solution2(x, y)
# 调用实例的twoSum_Dict方法,传入数组和目标值参数
print(Dict.twoSum_Dict(x, y))

运行后输出结果为:

暴力破解法返回结果:
[0, 1]
字典哈希法返回结果:
[0, 1]
优化建议

如果想要简化调用逻辑,可以直接把数组、目标值参数在构造实例时存入实例属性,求和方法直接调用属性即可,不需要重复传参:

class Solution1:
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target

    # 复杂度O(n²),列表越长性能越低
    def twoSum_BF(self):
        for i in range(len(self.nums) - 1):
            for j in range(i + 1, len(self.nums)):
                if self.nums[i] + self.nums[j] == self.target:
                    return [i, j]


class Solution2:
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target

    # 复杂度O(n),空间复杂度O(n),用空间换时间
    def twoSum_Dict(self):
        seen = {}
        for i, num in enumerate(self.nums):
            if self.target - num in seen:
                return [seen[self.target - num], i]
            elif num not in seen:
                seen[num] = i

# 调用逻辑简化
nums = [2, 7, 11, 15]
target = 9
print("暴力破解法返回结果:", Solution1(nums, target).twoSum_BF())
print("字典哈希法返回结果:", Solution2(nums, target).twoSum_Dict())

内容的提问来源于stack exchange,提问作者Kevin Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:09