博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法题——三数之和
阅读量:2344 次
发布时间:2019-05-10

本文共 1182 字,大约阅读时间需要 3 分钟。

1. 本题知识点

双指针

2. 题目描述

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

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

输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]

3. 解题思路

  1. 对数组进行排序
  2. 创建 Set 进行去重
  3. 遍历数组,固定 num[i],移动双指针
  4. 移动双指针,将符合的元素加入 Set
  5. 将 Set 转换为 List

4. 代码

public class Solution {
public List
> threeSum(int[] nums) {
// 对数组进行排序 Arrays.sort(nums); // 创建 Set 进行去重 Set
> set = new HashSet<>(); // 遍历数组,固定 num[i] for (int i = 0; i < nums.length; i++) {
int left = i + 1; int right = nums.length - 1; // 移动双指针,将符合的元素加入 Set while (left < right) {
if (nums[i] + nums[left] + nums[right] == 0) {
set.add(Arrays.asList(nums[i], nums[left], nums[right])); left++; right--; } else if (nums[i] + nums[left] + nums[right] < 0) {
left++; } else {
right--; } } } List
> list = new ArrayList<>(); // 将 Set 转换为 List list.addAll(set); return list; }}

转载地址:http://pcjvb.baihongyu.com/

你可能感兴趣的文章
Hadoop Hdfs 配置
查看>>
tsung集群测试
查看>>
oracle定时删除表空间的数据并释放表空间
查看>>
解决文件提示: /bin/ksh^M: bad interpreter: bad interpreter:No such file or directory
查看>>
ajaxanywhere jsp 使用
查看>>
如何静态化JSP页面
查看>>
XML 与 Java 技术: 用 Castor 进行数据绑定
查看>>
Python未知领域系列:(附Python学习教程+Python学习路线)Python高级教程之面向对象
查看>>
盘点Python 面向对象编程最容易被忽视的知识点
查看>>
Python:一个可以套路别人的python小程序
查看>>
数据全裸时代,你的隐私有多容易获取?
查看>>
分析http代理报错问题
查看>>
Python学习教程:Python入门笔记整理
查看>>
常用排序算法总结
查看>>
Java输入输出
查看>>
MSSQL数据库常见问题
查看>>
Java8 Lambda
查看>>
JAVA面试700问
查看>>
数据库DDL,DML,DCL,TCL
查看>>
各大数据库概述,比较
查看>>