zoukankan      html  css  js  c++  java
  • Algs4-1.4.15快速3-sum

    1.4.15快速3-sum。作为热身,使用一个线性级别的算法(而非基于二分查找的线性对数级别的算法)实现TwoSumFaster来计算已排序的数组中和为0的整数对的数量。用相同的思想为3-sum问题给出一个平方级别的算法。
    答:
    import java.util.Arrays;
    public class TwoSumFaster
    {
        public static int count(int[] a)
        {
            int i=0;
            int j=a.length-1;
            int cnt=0;
            int sum;
            while(i<j)
            {
                sum=a[i]+a[j];
                if(sum==0)
                {
                   // StdOut.printf("a[%d]=%d,a[%d]=%d ",i,j,a[i],a[j]);
                    i++;
                    j--;
                    cnt++;
                }
                else if(sum>0)
                    j--;
                else
                    i++;
            }//end while
            return cnt;
        }//end count
       
        public static void main(String[] args)
        {
            int[] a=In.readInts(args[0]);
            Arrays.sort(a);
            StdOut.println(count(a));
        }
    }

    /////////////////////////////


    import java.util.Arrays;
    public class ThreeSumFaster
    {
        public static int count(int[] a)
        {
            int j;
            int k;
            int cnt=0;
            int sum;
            for(int i=0;i<a.length;i++)
            {
                j=i+1;
                k=a.length-1;
                while(j<k)
               {
                  sum=a[i]+a[j]+a[k];
                  if(sum==0)
                   {
                     j++;
                     k--;
                     cnt++;
                  }
                  else if(sum>0)
                     k--;
                  else
                     j++;
               }//end while
            }//end for
            return cnt;
        }//end count
       
        public static void main(String[] args)
        {
            int[] a=In.readInts(args[0]);
            Arrays.sort(a);
            StdOut.println(count(a));
        }
    }


  • 相关阅读:
    apue-ubuntu环境搭建
    visualgdb 调试arm
    CMake速记
    umask
    转换函数conversion function
    c++ hex string array 转换 串口常用
    tcp与串口透传(select)
    sqlite3数据库修复SQLite-database disk image is malformed
    container_of宏
    shell 入门学习
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854428.html
Copyright © 2011-2022 走看看