Make Array Strictly Increasing LeetCode solution in Java

1
class Solution {
2
public int makeArrayIncreasing(int[] A, int[] B) { // A = arr1, B = arr2
3
TreeSet<Integer> set = new TreeSet<>(Arrays.stream(B).boxed().toList());
4
int[] dp = new int[B.length + 1];
5
dp[0] = -1;
6
int INF = (int) 2e9;
7
for (int i = 0; i < A.length; i++) {
8
for (int j = B.length; j >= 0; j--) {
9
int a = A[i] > dp[j] ? A[i] : INF; // option A - don't swap
10
Integer b = set.higher(j == 0 ? INF : dp[j - 1]); // option B - swap
11
dp[j] = Math.min(a, b == null ? INF : b); // take the min of A and B
12
}
13
}
14
for (int i = 0; i <= B.length; i++)
15
if (dp[i] != INF) {
16
return i;
17
}
18
return -1;
19
}
20
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0