pastebin

Paste Search Dynamic
Recent pastes
findTotalImbalance
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. public class Main
  9. {
  10.         public static void main (string[] args) throws java.lang.exception
  11.         {
  12.                 List<Integer> nums = arrays.asList(4,1,3,2);
  13.                 system.out.println(findTotalImbalance(nums));
  14.         }
  15.        
  16.         public static long findTotalImbalance(List<Integer> rank){
  17.            
  18.          long totalImbalance = 0;
  19.          int index  = 0;
  20.            
  21.           TreeSet<Integer> groupSet = new TreeSet<>();
  22.            
  23.           while ( index < rank.size()-1) {
  24.               groupSet.clear();
  25.               groupSet.add(rank.get(index));
  26.               long currentImbalance = 0;
  27.                
  28.               for (int i = index + 1; i < rank.size();i++) {
  29.                   int currentRank = rank.get(i);
  30.                   groupSet.add(currentRank);
  31.                  
  32.                   integer lowestRank = groupSet.lower(currentRank);
  33.                   integer highestRaank = groupSet.higher(currentRank);
  34.                    
  35.                   if (lowestRank == null) {
  36.                       currentImbalance += ((highestRaank-currentRank) >1 ? 1 : 0);
  37.                   }
  38.                    
  39.                   else if (highestRaank == null) {
  40.                       currentImbalance += (((currentRank-lowestRank) > 1 ) ? 1 : 0);
  41.                   }
  42.                    
  43.                   else {
  44.                       currentImbalance += (highestRaank-lowestRank) > 1 ? -1 : 0;
  45.                       currentImbalance += (((highestRaank-currentRank) > 1 ) ? 1 : 0);
  46.                       currentImbalance += ((currentRank-lowestRank)) > 1 ? 1 : 0;
  47.                   }
  48.                  
  49.                   totalImbalance += currentImbalance;
  50.               }
  51.              
  52.               index ++;
  53.           }
  54.            
  55.           return totalImbalance;    
  56.     }
  57.  
  58. }
Parsed in 0.036 seconds