Leetcode Permutations

Using linked list:

public class Solution {
    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        // if need to be unique, sort it first
        // Arrays.sort(num);
        LinkedList<Integer>l=new LinkedList<Integer>();
        for(int i:num){
            l.add(i);
        }
        return permute(l);
    }
   
    public ArrayList<ArrayList<Integer>> permute(LinkedList<Integer>l) {
        ArrayList<ArrayList<Integer>>result=new ArrayList<ArrayList<Integer>>();
       
        if(l.size()==0)return result;
        if(l.size()==1){
            ArrayList<Integer> n=new ArrayList<Integer>();
            n.add(l.get(0));
            result.add(n);
            return result;
        }
        for(int i=0;i<l.size();i++){
            // create a new array without i
            int current=l.get(i);
            // if need to be unique, add following line:
            // if(i>0&&current==l.get(i-1))continue;
            l.remove(i);
           
            ArrayList<ArrayList<Integer>>tresult=permute(l);
           
            for(ArrayList<Integer>rr:tresult){
                rr.add(0,current);
            }
            result.addAll(tresult);
            l.add(i,current);
        }
        return result;
    }
}

Just use array:
    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        // Start typing your Java solution below
        // DO NOT write main() function
        ArrayList<ArrayList<Integer>>result=new ArrayList<ArrayList<Integer>>();
       
        if(num.length==0)return result;
        if(num.length==1){
            ArrayList<Integer> n=new ArrayList<Integer>();
            n.add(num[0]);
            result.add(n);
            return result;
        }
        for(int i=0;i<num.length;i++){
            // create a new array without i
            int[]newnum=new int[num.length-1];
            int j=0;
            while(j<newnum.length){
                newnum[j]=num[j<i?j:j+1];
                j++;
            }
            ArrayList<ArrayList<Integer>>tresult=permute(newnum);
           
            for(ArrayList<Integer>rr:tresult){
                rr.add(0,num[i]);
            }
            result.addAll(tresult);
        }
        return result;
    }