Monday, October 5, 2015

[19.11] two sum, print all pairs

1. Example

s={1,3,5,6,7}
sum = 8 => {1,7} and {3,5}

2. Implementation


public List> void printPairsSums(int[] array, int sum)
{

    


      List> res = new ArrayList>();




      // validate the input
      //if ( array == null || array.length == 0)
      if ( array == null || array.length < 2 )
           return res;




      Arrays.sort(array);




     
      int l = 0; 
      int r = array.length-1;
      while(  l < r )
      {

           if (array[l] + array[r] == sum )
           {  
                List item = new ArrayList<>();
                 item.add(array[l]);
                 item.add(array[r]);
                 res.add(item);
                 l++;
                 r--;
                 // avoid duplicate
                 //while( l < array.length && array[l] == array[l-1] )
                 while ( l < r && array[l] == array[l-1] )
                     l++;
                 //while( r >= 0 && array[r] == array[r+1] )
                 while ( l < r && array[r] == array[r+1]  )
                     r--;
           }
           else if ( array[l] + array[r] > sum )
               r--;
           else 
               l++;
      } 



      return res;



}
3. Similar Ones

No comments:

Post a Comment