三数之和(LeetCode)

题目

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

**注意:**答案中不可以包含重复的三元组。

解题

python 复制代码
def threeSum(nums):
    nums.sort()  # 首先对数组进行排序
    result = []  # 用于存储最终结果的列表

    for i in range(len(nums) - 2):
        if i > 0 and nums[i] == nums[i - 1]:
            # 避免重复的三元组
            continue

        left, right = i + 1, len(nums) - 1

        while left < right:
            total = nums[i] + nums[left] + nums[right]

            if total < 0:
                left += 1
            elif total > 0:
                right -= 1
            else:
                # 找到一个和为0的三元组
                result.append([nums[i], nums[left], nums[right]])

                # 跳过重复的元素
                while left < right and nums[left] == nums[left + 1]:
                    left += 1
                while left < right and nums[right] == nums[right - 1]:
                    right -= 1

                # 移动到下一个不同的元素
                left += 1
                right -= 1

    return result


# 示例
nums = [-1, 0, 1, 2, -1, -4]
print(threeSum(nums))

\[-1, -1, 2\], \[-1, 0, 1\]

相关推荐
kgduu9 小时前
python中的魔法方法
开发语言·python
m0_596749099 小时前
Vue.js计算属性computed依赖追踪与副作用函数effect关联机制
jvm·数据库·python
MicroTech20259 小时前
量子安全赋能协同智能,微算法科技(NASDAQ :MLGO)研发PQS-BFL后量子区块链联邦学习框架
科技·算法·安全
神明9319 小时前
Golang testing怎么写单元测试_Golang单元测试教程【经典】
jvm·数据库·python
平行侠9 小时前
A19 工业设备故障决策树智能诊断系统
算法·决策树·机器学习
keineahnung23459 小时前
為什麼要有 eval_is_non_overlapping_and_dense?PyTorch 包裝層與調用端解析
人工智能·pytorch·python·深度学习
澈2079 小时前
平衡二叉树:AVL与红黑树终极对比
数据结构·c++·红黑树
您^_^9 小时前
CosyVoice 在 Windows 上推理不报错、不崩溃,但生成的音频文件是“意义不明“乱码音频
python·个人开发·cosyvoice
神明9319 小时前
如何自动同步SQL异构表数据_利用触发器实现实时数据复制
jvm·数据库·python
2401_850491659 小时前
CSS 悬停箭头跳动问题的根源与稳定解决方案
jvm·数据库·python