Implementación de 4sum en Java desde leetcode.

La declaración del problema de leetcode dice:

Dada una matriz S de n enteros, ¿hay elementos a, b, c, yd en S tales que a + b + c + d = target? Encuentra todos los cuadrupletes únicos en la matriz que da la suma del objetivo.

Nota:

Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
The solution set must not contain duplicate quadruplets.

Sobre este problema de cuatro sumas, tengo 2 preguntas:

¿Dónde me equivoqué? El código compilado no puede pasar todas las pruebas, pero pensé que el código debería ser correcto, ya que solo utiliza la fuerza bruta para resolver el problema.¿Hay alguna forma eficiente de resolver el problema de las cuatro sumas en lugar de este algoritmo de tiempo de ejecución O (n ^ 4)?
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class FourSumSolution{
    public ArrayList<ArrayList<Integer>> fourSum(int[] num, int target){
        ArrayList<ArrayList<Integer>> aList = new ArrayList<ArrayList<Integer>>();
        int N = num.length;

        for(int i=0; i<N; i++)
            for(int j=i+1; j<N; j++)
                for(int k=j+1; k<N; k++)
                    for(int l=k+1; l<N; l++){
                        int sum = num[i] + num[j] + num[k] + num[l];                        
                        if(sum == target){
                            ArrayList<Integer> tempArray = new ArrayList<Integer>();
                            Collections.addAll(tempArray, num[i], num[j], num[k], num[l]);
                            aList.add(tempArray);
                        }
                    }
        return aList;   
    }
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta