Advertisement
theSwamz

ShoppingOptions similar

Apr 15th, 2021
948
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.82 KB | None | 0 0
  1. package AmazonOA.Past_Tests;
  2.  
  3. import org.w3c.dom.ls.LSOutput;
  4.  
  5. import java.util.*;
  6.  
  7. public class FindAllCombinationsSumToTarget {
  8.  
  9.     public static int findCombos(List<Integer> a, List<Integer> b , List<Integer> c, List<Integer> d, int target){
  10.         SortedMap<Integer, Integer> mapAB = new TreeMap<>();
  11.  
  12.         //picking numbers from list A and B and summing, storing in sorted map
  13.         for(int i: a){
  14.             for(int j: b){
  15.                 mapAB.put(i + j, mapAB.getOrDefault(i+j,0) + 1);
  16.  
  17.             }
  18.         }
  19.  
  20.         int count = 0;
  21.  
  22.         for(int i : c){
  23.             for(int j : d){
  24.                 int difference = target - i - j; // we look for the difference
  25.                 Map<Integer, Integer> map = mapAB.headMap(difference + 1);
  26.                 if(map != null)
  27.                     count += map.size();
  28.             }
  29.         }
  30.  
  31.         return count;
  32.  
  33.     } //O(N^2)
  34.  
  35.     public static void main(String[] args){
  36.         List<Integer> a = new ArrayList<>();
  37.         List<Integer> b = new ArrayList<>();
  38.         List<Integer> c = new ArrayList<>();
  39.         List<Integer> d = new ArrayList<>();
  40.  
  41.         a.add(2);
  42.         a.add(3);
  43.         a.add(5);
  44.  
  45.         b.add(5);
  46.  
  47.         c.add(2);
  48.         c.add(3);
  49.         c.add(10);
  50.  
  51.         d.add(1);
  52.         d.add(2);
  53.         int target = 11;
  54.  
  55.         System.out.println(findCombos(a,b,c,d,target));
  56.  
  57.         List<Integer> a2 = new ArrayList<>();
  58.         List<Integer> b2 = new ArrayList<>();
  59.         List<Integer> c2 = new ArrayList<>();
  60.         List<Integer> d2 = new ArrayList<>();
  61.  
  62.         a2.add(2);
  63.         a2.add(3);
  64.  
  65.  
  66.         b2.add(4);
  67.  
  68.         c2.add(2);
  69.         c2.add(3);
  70.  
  71.  
  72.         d2.add(1);
  73.         d2.add(2);
  74.         int target2 = 10;
  75.         System.out.println(findCombos(a2,b2,c2,d2,target2));
  76.     }
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement