题解 | #牛群间的最大配对#

牛群间的最大配对

https://www.nowcoder.com/practice/b1e1afb9eb2c47e59bf25255d3a2948d

#include <vector>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums1 int整型vector
     * @param nums2 int整型vector
     * @return int整型
     */
    int maxUncrossedMatch(vector<int>& nums1, vector<int>& nums2) {
        // init
        f.resize(nums1.size(), vector<int>(nums2.size(), -1));
        for (auto p : nums1) n1.push_back(p);
        for (auto p : nums2) n2.push_back(p);
        // write code here
        return dfs(n1.size() - 1, n2.size() - 1);
    }

    // 记忆化搜索
    int dfs(int i, int j) {
        if (i < 0 || j < 0) return 0;
        if (f[i][j] != -1) return f[i][j];
        if (n1[i] == n2[j]) {
            f[i][j] = dfs(i - 1, j - 1) + 1;
        } else {
            f[i][j] = max(dfs(i - 1, j), dfs(i, j - 1));
        }
        return f[i][j];
    }

    vector<int> n1, n2;
    vector<vector<int> > f;
    // f[i][j]: n1 前 i 位与 n2 前 j 位的最大公共子序列长度
    // f[i][j] = f[i - 1][j - 1] + 1, if n1[i] == n2[j]
    // f[i][j] = max(f[i - 1][j], f[i][j - 1]), else
};

最长公共子序列

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
6997次浏览 66人参与
# 你的实习产出是真实的还是包装的? #
1348次浏览 34人参与
# 米连集团26产品管培生项目 #
4933次浏览 206人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7161次浏览 38人参与
# 简历第一个项目做什么 #
31369次浏览 316人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186586次浏览 1116人参与
# MiniMax求职进展汇总 #
23288次浏览 303人参与
# 研究所笔面经互助 #
118800次浏览 577人参与
# 面试紧张时你会有什么表现? #
30421次浏览 188人参与
# 简历中的项目经历要怎么写? #
309678次浏览 4168人参与
# AI时代,哪些岗位最容易被淘汰 #
62863次浏览 757人参与
# 职能管理面试记录 #
10731次浏览 59人参与
# 网易游戏笔试 #
6387次浏览 83人参与
# 腾讯音乐求职进展汇总 #
160457次浏览 1107人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7025次浏览 154人参与
# 正在春招的你,也参与了去年秋招吗? #
362814次浏览 2632人参与
# 你怎么看待AI面试 #
179494次浏览 1188人参与
# 小红书求职进展汇总 #
226933次浏览 1357人参与
# 你觉得通信/硬件有必要实习吗? #
155367次浏览 1065人参与
# 从哪些方向判断这个offer值不值得去? #
56714次浏览 357人参与
# 校招笔试 #
468185次浏览 2957人参与
# 你的房租占工资的比例是多少? #
92162次浏览 896人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务