请教下下一个算法问题

输入一个数组,找出有a+b+c=0这种规律的数组元素,重新组合成新的数组,加入到集合中。
例子:输入 :int[ ] nums [0,1,-1,-1,2,4]
输出结果: list{ [0,1,-1] , [2,-1,-1] }

List> result = new ArrayList>();
for(int i=0;i if(0==(nums[i]+nums[i+1]+nums[i+2])){
List ele = new ArrayList();
ele.add(nums[i]);
ele.add(nums[i+1]);
ele.add(nums[i+2]);
result.add(ele);
}
}
return result;


排列组合的题,列出所有组合,输出相加=0 的排列组合
http://blog.csdn.net/gsycwh/article/details/52288785?locationNum=3&fps=1

算法的话,三个数相加,我觉得分三层循环,每层对应一个加数;最外层循环从集合的第一个元素开始遍历 a[0],
中间层循环从第二个元素a[1]开始;内层从a[2]开始;

第一个组合是看a[0]+a[1]+a[2]==0?等于0的话就从集合中remove掉这三个元素放到新的集合中;
不等于0则,依次外后遍历集合;

以上只是一种想法,有漏洞的话欢迎指导!

    int i=0,j=0,m=0;
    int nums[6]= {0,1,-1,-1,2,4};
    for (i=0;i<3;i++)
    {
        for (j=i+1;j<4;j++)
        {
            for (m=j+1;m<5;m++)
            {

                if (nums[i]+nums[j]+nums[m]==0)
                {
                    //添加到列表
                }
            }
        }
    } 

public static void main(String[] args) {
int array[] = {0,1,-1,-1,2,4,-1,3,-1,2,4,0};
List> result = new ArrayList<>();
result = findArray(array);
Set> set = new HashSet<>(result);
result = new ArrayList<>(set);
System.out.println(result);
}

private static List<List<Integer>> findArray(int[] array) {
    List<List<Integer>> result = new ArrayList<>();
    if(null == array || array.length == 0){
        return result;
    }
    for(int i=0;i<array.length-2;i++){
        for(int j = i+1;j<array.length-1;j++){
            for(int k = j+1;k<array.length;k++){
                if(array[i]+array[j]+array[k] == 0){
                    List<Integer> oneResult = new ArrayList<>();
                    oneResult.add(array[i]);
                    oneResult.add(array[j]);
                    oneResult.add(array[k]);
                    Collections.sort(oneResult);
                    result.add(oneResult);
                }
            }
        }
    }
    return result;
}