Advertisement
ogv

Untitled

ogv
Aug 6th, 2020
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class Solution {
  5. public static int kthSmallest(int[] a, int[] b, int k) {
  6. k = Math.min(k, a.length + b.length);
  7.  
  8. int ai = 0, bi = 0;
  9. int r = 0;
  10. for (int i = 0; i < k; i++)
  11. if (ai >= a.length || bi < b.length && a[ai] >= b[bi]) r = b[bi++];
  12. else r = a[ai++];
  13.  
  14. return r;
  15. }
  16.  
  17. public static void main(String[] args) {
  18. Random random = new Random();
  19.  
  20. int szA = 4;
  21. int szB = 5;
  22.  
  23. int[] a = new int[szA];
  24. a[0] = random.nextInt(10);
  25. for (int i = 1; i < a.length; i++)
  26. a[i] = a[i-1] + (random.nextInt(1) == 0 ? random.nextInt(10): 0 );
  27.  
  28. int[] b = new int[szB];
  29. b[0] = random.nextInt(10);
  30. for (int i = 1; i < b.length; i++)
  31. b[i] = b[i-1] + (random.nextInt(1) == 0 ? random.nextInt(10): 0 );
  32.  
  33. boolean allGood = true;
  34.  
  35. for (int t = 1; t <= 12; t++) {
  36. for (int k = 1; k <= a.length + b.length; k++) {
  37. int actual = kthSmallest(a,b,k);
  38.  
  39. ArrayList<Integer> merged = new ArrayList<>();
  40. for (int x: a) merged.add(x);
  41. for (int x: b) merged.add(x);
  42. Collections.sort(merged);
  43.  
  44. int expected = merged.get(k-1);
  45.  
  46. if (actual != expected) {
  47. System.out.print("FAILED k=" + k + " a=" + Arrays.toString(a) + " b=" + Arrays.toString(b)
  48. + " expected=" + expected + " actual=" + actual + " merged=[");
  49. for (int x: merged) System.out.print(x + ", ");
  50. System.out.println("]");
  51.  
  52. allGood = false;
  53. }
  54. }
  55. }
  56.  
  57. System.out.println(allGood ? "ALL OK": "FAILED");
  58. }
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement