15 三数之和

超时的代码,我不咋会优化,请大神指教

class Solution {
    public static List<List<Integer>> threeSum(int[] nums) {
		List<List<Integer>> numsR = new ArrayList<List<Integer>>();
		List<Integer> intList;
		int zeroSign = 0;
		for(int i = 0 ;i < nums.length ;i++) {
			for(int j = 0 ; j < i ; j ++) {
				for(int k = 0 ; k < j ; k++ ) {
					if(nums[i]+nums[j]+nums[k]==0) {
						intList = new ArrayList<Integer>();
						intList.add(nums[i]);
						intList.add(nums[j]);
						intList.add(nums[k]);
						if(nums[i]==0&&nums[j]==0&&nums[k]==0&&zeroSign==0) {
							numsR.add(intList);
							zeroSign+=1;
							continue;
						}
						if(hasEqual(numsR, intList)) continue;
						else {
							numsR.add(intList);
						}
					}
				}
			}
			
		}
		return numsR;
	}
	public static boolean hasEqual(List<List<Integer>> basic , List<Integer> list) {
		Iterator<List<Integer>> listinfo = basic.iterator();
		List<Integer> buffer ;
		while(listinfo.hasNext()) {
			buffer = listinfo.next();
			if(buffer.containsAll(list)) return true;
		}
		return false;
	}
}

猜你喜欢

转载自blog.csdn.net/zcy_wxy/article/details/86477730