diff options
Diffstat (limited to 'challenge-333/deadmarshal/java')
| -rw-r--r-- | challenge-333/deadmarshal/java/Ch1.java | 19 | ||||
| -rw-r--r-- | challenge-333/deadmarshal/java/Ch2.java | 36 |
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-333/deadmarshal/java/Ch1.java b/challenge-333/deadmarshal/java/Ch1.java new file mode 100644 index 0000000000..c426d8ccbf --- /dev/null +++ b/challenge-333/deadmarshal/java/Ch1.java @@ -0,0 +1,19 @@ +public class Ch1 { + public static void main(String[] args) { + System.out.println(straight_line(new int[][]{{2, 1}, {2, 3}, {2, 5}})); + System.out.println(straight_line(new int[][]{{1, 4}, {3, 4}, {10, 4}})); + System.out.println(straight_line(new int[][]{{0, 0}, {1, 1}, {2, 3}})); + System.out.println(straight_line(new int[][]{{1, 1}, {1, 1}, {1, 1}})); + System.out.println(straight_line(new int[][]{{1000000, 1000000}, + {2000000, 2000000}, {3000000, 3000000}})); + } + + private static boolean straight_line(int[][] arr) { + int x1 = arr[0][0], y1 = arr[0][1], x2 = arr[1][0], y2 = arr[1][1]; + for (int i = 2; i < arr.length; ++i) { + int x = arr[i][0], y = arr[i][1]; + if ((x - x1) * (y2 - y1) != (y - y1) * (x2 - x1)) return false; + } + return true; + } +}
\ No newline at end of file diff --git a/challenge-333/deadmarshal/java/Ch2.java b/challenge-333/deadmarshal/java/Ch2.java new file mode 100644 index 0000000000..baac1c6ac5 --- /dev/null +++ b/challenge-333/deadmarshal/java/Ch2.java @@ -0,0 +1,36 @@ +import java.util.Arrays; + +public class Ch2 { + public static void main(String[] args) { + int[] a1 = new int[]{1, 0, 2, 3, 0, 4, 5, 0}; + int[] a2 = new int[]{1, 2, 3}; + int[] a3 = new int[]{1, 2, 3, 0}; + int[] a4 = new int[]{0, 0, 1, 2}; + int[] a5 = new int[]{1, 2, 0, 3, 4}; + for (var a : new int[][]{a1, a2, a3, a4, a5}) duplicate_zeros(a); + System.out.println(Arrays.toString(a1)); + System.out.println(Arrays.toString(a2)); + System.out.println(Arrays.toString(a3)); + System.out.println(Arrays.toString(a4)); + System.out.println(Arrays.toString(a5)); + } + + private static void duplicate_zeros(int[] arr) { + int n = arr.length, i = -1, k = 0; + while (k < n) { + ++i; + k += arr[i] > 0 ? 1 : 2; + } + int j = n - 1; + if (k == n + 1) { + arr[j--] = 0; + --i; + } + while (j >= 0) { + arr[j] = arr[i]; + if (arr[i] == 0) arr[--j] = arr[i]; + --i; + --j; + } + } +} |
