diff --git a/pom.xml b/pom.xml
index 5d77b71..36800f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
org.reflections
reflections
- 0.9.9
+ 0.9.11
\ No newline at end of file
diff --git a/src/main/java/org/zjy/learn/code/amazon/FindSongs.java b/src/main/java/org/zjy/learn/code/amazon/FindSongs.java
index e863b5b..fe3f5bc 100644
--- a/src/main/java/org/zjy/learn/code/amazon/FindSongs.java
+++ b/src/main/java/org/zjy/learn/code/amazon/FindSongs.java
@@ -14,6 +14,6 @@ public void run() {
}
private int[] findSongs(int[] songs) {
-
+ return null;
}
}
diff --git a/src/main/java/org/zjy/learn/code/amazon/ReorderLogFiles.java b/src/main/java/org/zjy/learn/code/amazon/ReorderLogFiles.java
index 9cea684..a4668b7 100644
--- a/src/main/java/org/zjy/learn/code/amazon/ReorderLogFiles.java
+++ b/src/main/java/org/zjy/learn/code/amazon/ReorderLogFiles.java
@@ -1,3 +1,7 @@
+package org.zjy.learn.code.amazon;
+
+import java.util.Arrays;
+
public class ReorderLogFiles {
public String[] reorderLogFiles(String[] logs) {
Arrays.sort(logs, (a, b) -> {
diff --git a/src/main/java/org/zjy/learn/code/amazon/TwoSumClosest.java b/src/main/java/org/zjy/learn/code/amazon/TwoSumClosest.java
index 738b221..10f3a72 100644
--- a/src/main/java/org/zjy/learn/code/amazon/TwoSumClosest.java
+++ b/src/main/java/org/zjy/learn/code/amazon/TwoSumClosest.java
@@ -3,10 +3,11 @@
import org.zjy.learn.util.Application;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.TreeMap;
-@Application(time = "06/17/2019 13:00")
+@Application(time = "06/17/2019 22:08")
public class TwoSumClosest implements Runnable {
/**
* two sum closest
@@ -16,11 +17,78 @@ public class TwoSumClosest implements Runnable {
*/
@Override
public void run() {
- List result1 = twoSumClosest(new int[][]{{1, 3}, {2, 4}, {3, 1}, {4, 2}}, new int[][]{{5, 3}, {6, 4}}, 8);
- for (Integer[] pair : result1) {
- System.out.println(pair[0] + " " + pair[1]);
+// List result1 = twoSumClosest(new int[][]{{1, 3}, {2, 4}, {3, 1}, {4, 2}}, new int[][]{{5, 3}, {6, 4}}, 8);
+// for (Integer[] pair : result1) {
+// System.out.println(pair[0] + " " + pair[1]);
+// }
+
+ int deviceCapacity1 = 20;
+ List> foreground1 = new ArrayList<>();
+ foreground1.add(Arrays.asList(1, 8));
+ foreground1.add(Arrays.asList(2, 7));
+ foreground1.add(Arrays.asList(3, 14));
+ List> background1 = new ArrayList<>();
+ background1.add(Arrays.asList(1, 5));
+ background1.add(Arrays.asList(2, 10));
+ background1.add(Arrays.asList(3, 14));
+ // expect: 3 1
+
+ int deviceCapacity2 = 20;
+ List> foreground2 = new ArrayList<>();
+ foreground2.add(Arrays.asList(1, 8));
+ foreground2.add(Arrays.asList(2, 15));
+ foreground2.add(Arrays.asList(3, 9));
+ List> background2 = new ArrayList<>();
+ background2.add(Arrays.asList(1, 8));
+ background2.add(Arrays.asList(2, 11));
+ background2.add(Arrays.asList(3, 12));
+ // expect:
+ // 1 3
+ // 3 2
+
+ System.out.println("1:");
+ output(optimalUtilization(deviceCapacity1, foreground1, background1));
+ System.out.println("2:");
+ output(optimalUtilization(deviceCapacity2, foreground2, background2));
+ }
+
+ private List> optimalUtilization(
+ int deviceCapacity,
+ List> foregroundAppList,
+ List> backgroundAppList)
+ {
+ // WRITE YOUR CODE HERE
+ TreeMap> tree = new TreeMap<>();
+ for (List pair : backgroundAppList) {
+ List list = tree.getOrDefault(pair.get(1), new ArrayList<>());
+ list.add(pair.get(0));
+ tree.put(pair.get(1), list);
+ }
+ TreeMap>> result = new TreeMap<>();
+ for (List pair : foregroundAppList) {
+ Integer floorKey = tree.floorKey(deviceCapacity - pair.get(1));
+ if (floorKey != null) {
+ int diff = Math.abs(deviceCapacity - pair.get(1) - floorKey);
+ List> list = result.getOrDefault(diff, new ArrayList<>());
+ for (int id : tree.get(floorKey)) {
+ List match = new ArrayList<>();
+ match.add(pair.get(0));
+ match.add(id);
+ list.add(match);
+ }
+ result.put(diff, list);
+ }
}
+ return result.get(result.firstKey());
+ }
+ private void output(List> matrix) {
+ for (List row : matrix) {
+ for (int col : row) {
+ System.out.print(col + " ");
+ }
+ System.out.println();
+ }
}
/**
diff --git a/src/main/java/org/zjy/learn/util/Main.java b/src/main/java/org/zjy/learn/util/Main.java
index 7e155fb..f9d25dc 100644
--- a/src/main/java/org/zjy/learn/util/Main.java
+++ b/src/main/java/org/zjy/learn/util/Main.java
@@ -1,6 +1,5 @@
package org.zjy.learn.util;
-
import org.reflections.Reflections;
import java.lang.annotation.Annotation;