3-sum问题的平方级别算法
来源:互联网 发布:2015网络神曲排行榜 编辑:程序博客网 时间:2024/05/21 22:53
package Basic;import java.util.Arrays;import java.util.Scanner;public class TwoSumFast {public static void main(String[] args) {int[] a = {-1, 0, 1, 2, -1, -4};int count = 0;System.out.print("input target:");Scanner scanner = new Scanner(System.in);int target = scanner.nextInt();Arrays.sort(a);int i = 0,j = a.length-1;/*for(int k = 0;k < a.length;k++){ //错误的代码 每次都从头开始扫,重复计算。也没有考虑相同的数字导致重复的情形。while(k<a.length-1 && a[k]==a[k+1])k++;if(i==k)i++;if(j==k)j--; int t = target-a[k]; System.out.println("第"+k+"个作为第一个:"+"找和为"+t+"的两个数");while(i < j){if(a[i]+a[j] > t){System.out.println("j是:"+j);j--;if(j==k)j--;}else if(a[i]+a[j] < t){System.out.println("i是:"+i);i++;if(i==k)i++;}else{System.out.println(t);System.out.println("找到了一个"+"i:"+i+" j:"+j);count++;i++;j--;if(i==k)i++;if(j==k)j--;}}i = 0;j = a.length-1;}*/ for(int k = 0;k < a.length;k++){ while(k!=0 && a[k]==a[k-1]) //跳过相同的数字,只能跳过相同数字中后面的,不能跳过前面的!否则会漏掉一些情况。k++; i = k+1; //确保能够遍历一遍,而且不是每次都从头开始找,去掉了重复的情况,也不会把当前的k也算上 j = a.length-1; int t = target-a[k]; while(i < j){ if(a[i] + a[j] < t) i++; else if(a[i] + a[j] > t) j--; else { System.out.println("找到了一个"+"i:"+i+" j:"+j); count++; i++; j--; } } }System.out.println(count);}}
0 0
- 3-sum问题的平方级别算法
- 3-sum问题平方对数级别解法(algs4)
- 算法-3Sum问题
- 1的平方-2的平方+3的平方-4的平方...-100的平方,结果
- 【算法】2SUM/3SUM/4SUM问题
- 3-SUM问题的O(n²)算法
- 一个平方乘算法的模板
- c的求和、阶乘、平方算法
- PCA算法的最小平方误差解释
- 【转】判断完全平方数的算法
- 3sum colsest的问题
- 连接n个字符串而重复的使用+,需要n的平方级别的时间?为什么?
- 数组的前缀和(Prefix Sum)问题及其并行算法
- 模重复平方算法
- 平方乘算法实现
- 算法训练 平方计算
- 算法训练 平方计算
- 算法训练 平方计算
- 3529: [Sdoi2014]数表|莫比乌斯反演|树状数组
- Codeforces 321E Ciel and Gondolas(DP)
- nyoj--1000 又见斐波那契数列(快速幂+欧拉定理)
- nm 提示 no symbol 的问题(strip)
- sharesdk 分享总结
- 3-sum问题的平方级别算法
- 评价标签FlowLayout实现
- 一个View的创建过程
- unauthenticated user连接问题
- springmvc+spring+mybatis+maven+mysql项目(二)Springmvc + ajax 实现javaweb验证码的制作及进行异步验证
- canvas实现放大镜功能
- Servlet生命周期与工作原理
- 23.leetcode题目203: Remove Linked List Elements(待再做)
- PAT 乙级真题 1004.成绩排名