• Algs4-1.4.14 4-sum


    1.4.14  4-sum。为4-sum设计一个算法。
    答:
    import java.util.Arrays;
    public class FourSum
    {
        public static int count1(int[] a)
        {
            int cnt=0;
            for(int i=0;i<a.length;i++)
                for(int j=i+1;j<a.length;j++)
                    for(int k=j+1;k<a.length;k++)
                        for(int l=k+1;l<a.length;l++)
                            if(a[i]+a[j]+a[k]+a[l]==0)
                               cnt++;
            return cnt;
        }
       
        public static int count2(int[] a)
        {
           int cnt=0;
            Arrays.sort(a);
           for(int i=0;i<a.length;i++)
              for(int j=i+1;j<a.length;j++)
                 for(int k=j+1;k<a.length;k++)
                    if (BinarySearch.rank(-a[i]-a[j]-a[k],a)>k)
                          cnt++;
            return cnt;
        }
       
        public static int count3(int[] a)
        {
            int k;
            int l;
            int cnt=0;
            int sum;
            Arrays.sort(a);
            for(int i=0;i<a.length;i++)
                for (int j=i+1;j<a.length;j++)
                   {
                      k=j+1;
                      l=a.length-1;
                      while(k<l)
                     {
                        sum=a[i]+a[j]+a[k]+a[l];
                        if(sum==0)
                        {
                          k++;
                          l--;
                          cnt++;
                        }
                    else if(sum>0)
                        l--;
                    else
                        k++;
                }//end while
            }//end for
            return cnt;
        }//end count
       
        public static void main(String[] args)
        {
            int[] a=In.readInts(args[0]);
            StdOut.println(count1(a));
            StdOut.println(count2(a));
            StdOut.println(count3(a));
        }
    }

  • 相关阅读:
    阿里巴巴excel工具easyexcel 助你快速简单避免OOM
    IoC和AOP的理解
    WebSocket和kafka实现数据实时推送到前端
    Swagger使用指南
    转载:对于马老师对996的看法
    基础:新建个maven项目
    eclipse集成lombok
    多线程
    jar包

  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854424.html
Copyright © 2020-2023  润新知