Skip to content

Commit 4d85261

Browse files
author
junyan zhang
committed
Change two sum closest
1 parent c172197 commit 4d85261

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main/java/org/zjy/learn/code/amazon/TwoSumClosest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,26 @@ private List<List<Integer>> optimalUtilization(
6464
list.add(pair.get(0));
6565
tree.put(pair.get(1), list);
6666
}
67-
TreeMap<Integer, List<List<Integer>>> result = new TreeMap<>();
67+
int diff = Integer.MAX_VALUE;
68+
List<List<Integer>> result = new ArrayList<>();
6869
for (List<Integer> pair : foregroundAppList) {
6970
Integer floorKey = tree.floorKey(deviceCapacity - pair.get(1));
7071
if (floorKey != null) {
71-
int diff = Math.abs(deviceCapacity - pair.get(1) - floorKey);
72-
List<List<Integer>> list = result.getOrDefault(diff, new ArrayList<>());
72+
if (Math.abs(deviceCapacity - pair.get(1) - floorKey) < diff) {
73+
result.clear();
74+
diff = Math.abs(deviceCapacity - pair.get(1) - floorKey);
75+
} else if (Math.abs(deviceCapacity - pair.get(1) - floorKey) > diff) {
76+
continue;
77+
}
7378
for (int id : tree.get(floorKey)) {
7479
List<Integer> match = new ArrayList<>();
7580
match.add(pair.get(0));
7681
match.add(id);
77-
list.add(match);
82+
result.add(match);
7883
}
79-
result.put(diff, list);
8084
}
8185
}
82-
return result.get(result.firstKey());
86+
return result;
8387
}
8488

8589
private void output(List<List<Integer>> matrix) {

0 commit comments

Comments
 (0)