算法 1.4.15 快速3-sum

来源:互联网 发布:淘宝售后换货申请 编辑:程序博客网 时间:2024/06/07 11:27

我只考虑数组中并未存在重复的元素

O(N) 只要把数组全部扫一遍就好了

public static int TwoSumFast2(int[] a){ // O NArrays.sort(a);int cnt=0;int left = 0, right = a.length-1;while(left<right){if(a[left]+a[right]==0){cnt++;left++;}if(a[left]+a[right]>0) right--;if(a[left]+a[right]<0) left++;}return cnt;}


3-sum和2-sum思路一致 O(N^2)

public static int ThreeSumFast2(int[] a){ // N^2 Arrays.sort(a);int N = a.length;int cnt=0;for(int i=0;i<N;i++){int left = i+1, right=a.length-1;while(left<right){if(a[left]+a[right]+a[i]==0){cnt++;left++;}if(a[left]+a[right]+a[i]>0) right--;if(a[left]+a[right]+a[i]<0) left++;}}return cnt;}