第一版实现代码
class Solution(object):
def twoSum(self, nums, target):
nums_with_index = list(enumerate(nums))
sorted_nums = sorted(nums_with_index, key=lambda x: x[1])
left = 0
right = len(sorted_nums) - 1
while sorted_nums[left][1] + sorted_nums[right][1] != target :
if (sorted_nums[left][1] + sorted_nums[right][1]) > target :
right -= 1
else:
left += 1
return [sorted_nums[left][0], sorted_nums[right][0]]
nums = [2,7,11,15]
target = 9
s = Solution()
print(s.twoSum(nums, target))
遇到的第一个问题
在 Python 中,类的方法可以分为几种不同的类型,其中包括实例方法、类方法和静态方法。这些方法的定义和使用方式有所不同,主要区别在于它们是否需要访问类或实例的状态。
实例方法
实例方法是类中最常见的方法类型。它们的第一个参数通常是 self
,代表类的实例对象。当你通过一个实例对象调用实例方法时,Python 会自动将该实例作为 self
参数传递给方法。
示例
class MyClass:
def instance_method(self):
print("This is an instance method, and 'self' is:", self)
# 创建一个实例
my_instance = MyClass()
# 调用实例方法
my_instance.instance_method() # 输出 "This is an instance method, and 'self' is: <__main__.MyClass object at 0x...>"
实例方法通常用于操作实例变量或执行需要实例上下文的操作。
类方法
类方法的第一个参数通常命名为 cls
,它指的是类本身而不是类的实例。类方法主要用于处理与类相关的信息,而不是与具体实例相关的信息。
示例
class MyClass:
class_var = "I am a class variable"
@classmethod
def class_method(cls):
print("This is a class method, and 'cls' is:", cls)
print("Accessing class variable through class method:", cls.class_var)
# 调用类方法
MyClass.class_method() # 输出 "This is a class method, and 'cls' is: <class '__main__.MyClass'>"
# 输出 "Accessing class variable through class method: I am a class variable"
类方法通常用于创建工厂方法、处理类级别的逻辑或更新类变量。
静态方法
静态方法既不需要 self
也不需要 cls
参数。它们通常用于包含辅助功能的方法,这些功能与类或实例无关,更像是普通的函数,只是逻辑上属于该类。
示例
class MyClass:
@staticmethod
def static_method():
print("This is a static method.")
# 调用静态方法
MyClass.static_method() # 输出 "This is a static method."
静态方法通常用于封装与类相关的工具函数或算法。
总结
- 实例方法:第一个参数是
self
,代表类的一个实例。它们可以访问和修改实例变量。 - 类方法:第一个参数是
cls
,代表类本身。它们可以访问和修改类变量。 - 静态方法:没有
self
或cls
参数,不依赖于类或实例的状态,主要用于封装功能。
选择哪种类型的方法取决于你的需求。如果你的方法需要访问实例变量,使用实例方法;如果方法需要访问类变量或类级别的逻辑,使用类方法;如果方法与类或实例的状态无关,使用静态方法。
遇到的第二个问题
python没有++i 这种用法
第二版代码
class Solution(object):
def twoSum(nums, target):
hash_table = dict()
for index, num in enumerate(nums) :
if target - num in hash_table :
return [hash_table[target - num], index]
hash_table[num] = index
return []
哈希表
哈希表也叫作散列表,这种数据结构提供了键(Key)和值(Value)的映射关系。只要给定一个Key,就可以高效查找到匹配的Value.