1. 两数之和

第一版实现代码

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,代表类本身。它们可以访问和修改类变量。
  • 静态方法:没有 selfcls 参数,不依赖于类或实例的状态,主要用于封装功能。

选择哪种类型的方法取决于你的需求。如果你的方法需要访问实例变量,使用实例方法;如果方法需要访问类变量或类级别的逻辑,使用类方法;如果方法与类或实例的状态无关,使用静态方法。

遇到的第二个问题

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值