Advertisement
alex0sunny

partition_subarray

Sep 13th, 2021 (edited)
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.66 KB | None | 0 0
  1. def find_k_subseq(k, a, b):
  2.     b_subs = [b[ib:ib + k] for ib in range(len(b) - k + 1)]
  3.     for ia in range(len(a) - k + 1):
  4.         a_sub = a[ia:ia + k]
  5.         if a_sub in b_subs:
  6.             return True
  7.     return False
  8.  
  9.  
  10. def get_len(a, b):
  11.     if len(a) > len(b):
  12.         a, b = b, a
  13.     lo = 0
  14.     hi = len(a) + 1
  15.     while lo < hi - 1:
  16.         mid = (lo + hi) // 2
  17.         if find_k_subseq(mid, a, b):
  18.             lo = mid
  19.         else:
  20.             hi = mid
  21.     return lo
  22.  
  23.  
  24. a = [1, 2, 3, 4, 5]
  25. b = [4, 5, 9]
  26. assert (get_len(a, b) == 2)
  27.  
  28. a = [1, 2, 3, 2, 1]
  29. b = [3, 2, 1, 5, 6]
  30. assert (get_len(a, b) == 3)
  31.  
  32. assert (get_len([1], [1]) == 1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement