實現:java
public class Solution { public List<List<Integer>> threeSum( int[] num ) { List<List<Integer>> list= new LinkedList<List<Integer>>(); Arrays. sort(num);//對num排序 for(int i =0;i <num .length ;i ++){ if(i >0&&num[i]==num[i-1])//去重,若是排序好的數組先後兩個數字是相等的,那麼以前確定已經計算過這個數字了,本次跳過 continue; for(int j =i +1;j <num .length ;j ++){ if(j >i +1&&num[j]==num[j-1])//去重,同上 continue; for(int k =j +1;k <num .length ;k ++){ if(k >j +1&&num[k]==num[k-1])//去重,同上 continue; if(num [i ]+num [j ]+num [k ]==0){ int l1 =num [i ]; int l2 =num [j ]; int l3 =num [k ]; List<Integer> ll= new LinkedList<Integer>(); if(l1 <l2 ){ ll.add( l1); ll.add( l2); if(l3 <l1 ) ll.add(0, l3); else if (l3 >l1 &&l3<l2) ll.add(1, l3); else ll.add( l3); } else{ ll.add( l2); ll.add( l1); if(l3 <l2 ) ll.add(0, l3); else if (l3 >l2 &&l3<l1) ll.add(1, l3); else ll.add( l3); } list.add( ll); } } } } return list ; } }