1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Solution { public int videoStitching(int[][] clips, int T) { int[] range = new int[T + 1]; Arrays.fill(range, -1); for (int[] clip : clips) { if (clip[0] == 0) { range[0] = Math.max(range[0], clip[1]); } }
if (range[0] == -1) { return -1; }
int count = 1; for (int i = 1; i < range.length; i++) { if (range[i - 1] >= i) { range[i] = range[i - 1]; } else { for (int[] clip : clips) { if (i > clip[0] && i <= clip[1]) { range[i] = Math.max(range[i], clip[1]); } } if (range[i] != -1) { count++; } else { return -1; } } } return range[T] == -1 ? -1 : count; } }
|