2024/12/9 【哈希表】LeetCode 15.三数之和 【❌】知识点:sort和sorted函数

15. 三数之和 - 力扣(LeetCode)

代码随想录 (programmercarl.com)

方法一:双指针法

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        res = []
        nums.sort()
        for i in range(len(nums)):
            if nums[i] > 0:
                return res

            if i > 0 and nums[i] == nums[i-1]:
                continue

            left = i+1
            right = len(nums)-1
            while left < right:
                sum = nums[i] + nums[left] + nums[right]
                if sum > 0:
                    right -= 1
                elif sum < 0:
                    left += 1
                else:
                    res.append([nums[i], nums[left], nums[right]])
                    while left < right and nums[right] == nums[right-1]:
                        right -= 1
                    while left < right and nums[left] == nums[left+1]:
                        left += 1

                    left += 1
                    right -= 1
        return res     

sort() ,sorted()函数

Python中的sort()方法是用于对列表进行排序的一个方法。它可以对列表中的元素进行就地排序(即修改原列表),并且默认按升序排列。

sort()方法只有在列表类型上才可用,且它是一个就地操作,这意味着它不会返回一个新的列表,而是直接对原列表进行修改。

可选参数

sort()方法接受两个可选参数:

  1. key:一个函数,用来从每个列表元素中提取出一个用于比较的值。默认情况下,keyNone,即直接对元素本身进行比较。
  2. reverse:如果为True,则会对列表进行降序排列;如果为False(默认值),则按升序排列。

示例

使用key参数

假设有一个列表,里面包含一些元组,我们希望按照元组的第二个元素进行排序:

my_list = [(1, 'one'), (3, 'three'), (2, 'two')]
my_list.sort(key=lambda x: x[1])  # 按照元组的第二个元素进行排序
print(my_list)
# 输出: [(1, 'one'), (3, 'three'), (2, 'two')]

使用reverse参数

我们可以设置reverse=True来进行降序排序:

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort(reverse=True)
print(my_list)
# 输出: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

返回值

sort()方法没有返回值,它会直接对原列表进行修改。如果你需要保持原列表不变并返回排序后的新列表,可以使用sorted()方法,它返回一个新的排序后的列表,而不会修改原列表。

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list)
# 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 原列表不变
print(my_list)
# 输出: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

方法二:使用字典的

看不懂

if j > i + 2 and nums[j] == nums[j-1] == nums[j-2]: # 三元组元素b去重
                    continue

 

posted @ 2024-12-13 20:59  axuu  阅读(3)  评论(0编辑  收藏  举报