15. 3Sum

作者: 一里山 | 来源:发表于2017-04-07 09:26 被阅读8次

    题目描述

    给定n个整数的数组,找到元素a,b,c使得a + b + c = 0 。
    For example, given array S = [-1, 0, 1, 2, -1, -4],
    A solution set is:
    [
    [-1, 0, 1],
    [-1, -1, 2]
    ]

    分析

    1. 注意n的取值范围,n的上限是多少?
    2. 优化:n^3 =>
    3. 利用双指针进行优化
      3.1 利用双指针需要先对数组进行排序,获得数据阶梯特征

    暴力解法

    1. 如何消除重复解
      方法:先把目标三个数排序,之后利用HashSet排除重复数据
    HashSet h=new HashSet(arr);
    arr.clear();
    arr.addAll(h);
    
    1. 3个循环

    相对陌生知识点

    1. java获取当前系统时间:
    2. ArrayList使用(初始化、赋值、排除重复数据)
    3. List和ArrayList的转化
    4. 数组的排序

    结果

    1. 第一次暴力求解超时了(Time Limit Exceeded),245 / 313 test cases passed.
    2. 第二次先排序,然后利用双指针进行优化,结果还是超时( Time Limit Exceeded),311 / 313 test cases passed.

    相关文章

      网友评论

          本文标题:15. 3Sum

          本文链接:https://www.haomeiwen.com/subject/lbhfattx.html