• 【leetcode列】3Sum


    现在的问题是,我开始思考:一是制定了一些,然后设置这个数字,除了里面找到两个数字。最后,计算和。重复,供N的数量,需要N-2周期。

    我的问题是如何找到的其他两个数字,其实,我想引用Two Sum内部解决方案,它是用Hashtable存。纽带值是<随意两个数的和,<下标1,下标2>>,可是构造这个Hashtable就须要O(N^2),后面真正解的时候有须要O(N^2)。

    參考了大牛的解法后,明确了找两个数还是用两个下标同一时候往中间移动比較好,以下上代码。

    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class Solution {
    	public static ArrayList<ArrayList<Integer>> threeSum(int[] numbers) {
    		ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    		if (numbers.length < 3) {
    			return result;
    		}
    		Arrays.sort(numbers);
    		for (int i : numbers) {
    			System.out.print(i + " ");
    		}
    		System.out.println();
    		for (int i = 0; i < numbers.length - 2; i++) {
    			int lp = i + 1;
    			int rp = numbers.length - 1;
    			while (lp < rp) {
    				int sum = numbers[i] + numbers[lp] + numbers[rp];
    				if (sum == 0) {
    					ArrayList<Integer> tmp = new ArrayList<Integer>();
    					tmp.add(numbers[i]);
    					tmp.add(numbers[lp]);
    					tmp.add(numbers[rp]);
    					result.add(tmp);
    					do {
    						lp++;
    					} while (lp < rp && numbers[lp] == numbers[lp + 1]);
    					do {
    						rp--;
    					} while (lp < rp && numbers[rp] == numbers[rp - 1]);
    				} else if (sum < 0) {
    					lp++;
    				} else if (sum > 0) {
    					rp--;
    				}
    			}
    		}
    		return result;
    	}
    
    	public static void main(String[] args) {
    		int[] a = { -1, 0, 1, 2, -1, -4 };
    		ArrayList<ArrayList<Integer>> result = threeSum(a);
    		for (ArrayList<Integer> item : result) {
    			for (Integer i : item) {
    				System.out.print(i + " ");
    			}
    			System.out.println();
    		}
    	}
    }
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    IDEA 编译时 未结束的字符串文字
    JAVA文件下载,页面显示另存为效果
    no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
    【转】修改LINUX时间
    【转】tomcat7性能调优
    【转】Nginx中upstream有以下几种方式:
    【转】tomcat性能调优
    【转】Memcached安装
    【转】 linux下的g++编译器安装
    【转】nginx+tomcat+memcached (msm)实现 session同步复制
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4890331.html
Copyright © 2020-2023  润新知