4sum Implementierung in Java von Leetcode

Die Problemstellung von leetcode lautet:

Gibt es bei einem Array S von n ganzen Zahlen Elemente a, b, c und d in S, so dass a + b + c + d = Ziel ist? Finden Sie alle eindeutigen Quadruplets in dem Array, das die Summe der Ziele angibt.

Hinweis:

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.

Zu diesem Viersummenproblem habe ich 2 Fragen:

Wo habe ich mich geirrt? Der kompilierte Code kann nicht alle Tests bestehen, aber ich dachte, der Code sollte stimmen, da er nur brachiale Gewalt verwendet, um das Problem zu lösen.Gibt es eine effiziente Möglichkeit, das Vier-Summen-Problem anstelle dieses O (n ^ 4) -Laufzeitalgorithmus zu lösen?
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;   
    }
}

Antworten auf die Frage(5)

Ihre Antwort auf die Frage