Advertisement
farkhatmikhalko

uncrossed-lines

Oct 15th, 2019
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. /*
  2. Runtime: 12 ms, faster than 57.50% of C++ online submissions for Uncrossed Lines.
  3. Memory Usage: 8.7 MB, less than 93.94% of C++ online submissions for Uncrossed Lines.
  4. */
  5. class Solution {
  6. public:
  7.     int maxUncrossedLines(vector<int>& A, vector<int>& B) {
  8.         int lt[501] = {}, nxt[501] = {}, mx[501] = {};
  9.         for(int i = 0; i < B.size(); i++) {
  10.             lt[i] = (B[i]==A[0]);
  11.             mx[i] = i>0 ? max(mx[i-1], lt[i]) : lt[i];
  12.         }
  13.         for(int i = 1; i < A.size(); i++) {
  14.             for(int j = 0; j < B.size(); j++) {
  15.                 int x = j>0 ? mx[j-1] : 0;
  16.                 nxt[j] = max(lt[j], x+(A[i]==B[j]));
  17.             }
  18.             for(int j = 0; j < B.size(); j++) {
  19.                 lt[j] = nxt[j];
  20.                 mx[j] = j>0 ? max(mx[j-1], lt[j]) : lt[j];
  21.             }
  22.             memset(nxt, 0, sizeof(nxt));
  23.         }
  24.         return mx[B.size()-1];
  25.     }
  26. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement