zoukankan      html  css  js  c++  java
  • 【leetcode】_3Sum

    • 外加一层循环,遍历数组所有数,作为第一个数,其他两个与2sum类似,a+b=target结束循环,如果小就a+,如果大就b-
    • 将满足条件的结果(三个数字)放入midresult中,midresult是个链表,将midresult放入hashmap中去重
    • 再将hashmap中取出来放入result中即可

       

    public class _3Sum {

    public static ArrayList threeSum(int[] num) {

    Arrays.sort(num);

    ArrayList result = new ArrayList();

    Map hm = new HashMap();

       

    for (int firstPos = 0; firstPos < num.length; firstPos++) {

    int secPos = firstPos + 1;

    int thirdPos = num.length - 1;

    while (secPos < thirdPos) {

    if (num[firstPos] + num[secPos] + num[thirdPos] == 0) {

    ArrayList<Integer> midResult = new ArrayList<Integer>();

    midResult.add(num[firstPos]);

    midResult.add(num[secPos]);

    midResult.add(num[thirdPos]);

    hm.put(midResult, false);

    secPos += 1;

    thirdPos -= 1;

    } else if (num[firstPos] + num[secPos] + num[thirdPos] < 0) {

    secPos += 1;

    } else {

    thirdPos -= 1;

    }

    }

    }

    Iterator it = hm.entrySet().iterator();

    while (it.hasNext()) {

    //                        Entry entry =(Entry) it.next();

    //                        result.add(entry.getKey());

    result.add(it.next());

    }

    return result;

       

    }

       

    public static void main(String[] args) {

    //                int[] num = { -1, 0, 1, 2, -1, -4,-1,0,1};

    int[] num = {0,0,0};

    System.out.println(threeSum(num));

    }

    }

  • 相关阅读:
    day10
    python学习第六天
    Python学习第五天
    python学习第四天第一部分
    python学习第三天第一部分
    python学习第二天第二部分
    python学习第二天第一部分
    崔西凡JavaWeb笔记day13-day15(2016年8月30日22:36:30)
    崔希凡JavaWeb笔记day10~day12(2016年8月22日11:55:20)
    崔希凡-javaWeb-笔记day07-day09(2016年7月26日23:14:40)
  • 原文地址:https://www.cnblogs.com/keedor/p/4397741.html
Copyright © 2011-2022 走看看