Advertisement
Guest User

Untitled

a guest
Nov 17th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.58 KB | None | 0 0
  1. public class Solution {
  2.     public ArrayList<ArrayList<Integer>> fourSum(int[] num, int target) {
  3.         // Start typing your Java solution below
  4.         // DO NOT write main() function
  5.     Arrays.sort(num);
  6.     ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
  7.     for (int i = 0; i < num.length - 3;) {
  8.         for (int j = i + 1; j < num.length - 2;) {
  9.            
  10.             int k = j + 1;
  11.             int l = num.length - 1;
  12.            
  13.             while (k < l) {
  14.                 int sum = num[i] + num[j] + num[k] + num[l];
  15.                 if (sum > target) {
  16.                     int prev_l = num[l];
  17.                     while(l > j && num[l] == prev_l) l--;
  18.                 }
  19.                 else if (sum < target) {
  20.                     int prev_k = num[k];
  21.                     while(k < num.length && num[k] == prev_k) k++;
  22.                 }
  23.                 else if (sum == target) {
  24.                     ArrayList<Integer> tmp = new ArrayList<Integer>();
  25.                     tmp.add(num[i]);
  26.                     tmp.add(num[j]);
  27.                     tmp.add(num[k]);
  28.                     tmp.add(num[l]);
  29.                     result.add(tmp);
  30.  
  31.                     while(k < num.length && num[k] == tmp.get(2)) k++;
  32.                     while(l > j && num[l] == tmp.get(3)) l--;
  33.                 }
  34.             }
  35.             int prev_j = num[j];
  36.             while(j < num.length - 2 && prev_j == num[j]) j++;
  37.         }
  38.         int prev_i = num[i];
  39.         while(i < num.length - 3 && prev_i == num[i]) i++;
  40.     }
  41.     return result;
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement