热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LeetCode实战:寻找三数之和为零的组合

给定一个包含n个整数的数组,判断该数组中是否存在三个元素a、b、c,使得a+b+c=0。找出所有满足条件且不重复的三元组。

题目描述(英文)

Given an array nums of n integers, determine if there are elements a, b, c in nums such that a + b + c = 0. Identify all unique triplets in the array that sum up to zero.

Note: The solution set must not contain duplicate triplets.

Example:

Given array nums = [-1, 0, 1, 2, -1, -4], a solution set is: [ [-1, 0, 1], [-1, -1, 2] ] 

题目描述(中文)

给定一个包含 n 个整数的数组 nums,判断数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。

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

示例:

给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 

算法实现

以下是使用 C# 实现的解决方案:

public class Solution { public IList> ThreeSum(int[] nums) { var result = new List>(); if (nums == null || nums.Length <3) return result; Array.Sort(nums); int len = nums.Length; for (int i = 0; i  0) break; // 如果当前数字大于0,则三数之和一定大于0,所以结束循环 if (i > 0 && nums[i] == nums[i - 1]) continue; // 去重 int l = i + 1; int r = len - 1; while (l  { nums[i], nums[l], nums[r] }); while (l  0) { r--; } } } return result; } } 

实验结果

  • 状态:通过
  • 313 / 313 个通过测试用例
  • 执行用时:468 ms

提交结果

相关资源

  • LeetCode 实战:删除链表的倒数第 N 个节点
  • LeetCode 实战:合并两个有序链表
  • LeetCode 实战:两两交换链表中的节点
  • LeetCode 实战:旋转链表
  • LeetCode 实战:相同的树
  • LeetCode 实战:对称二叉树
  • LeetCode 实战:二叉树的最大深度
  • LeetCode 实战:搜索二维矩阵
  • LeetCode 实战:将有序数组转换为二叉搜索树
  • 资料分享:数学建模资料分享 – 图论部分
  • 资料分享:数学建模资料分享 – 神经网络部分
  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 实现 误差反向传播 学习规则?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?

推荐阅读
author-avatar
深圳市互联网大会
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有