当前位置: 首页> 教育> 大学 > 网店运营工作内容_浏览器为什么无法打开网页_查询网址域名_目前在哪个平台做推广好

网店运营工作内容_浏览器为什么无法打开网页_查询网址域名_目前在哪个平台做推广好

时间:2025/7/11 7:55:04来源:https://blog.csdn.net/m0_72708335/article/details/144612926 浏览次数:0次
网店运营工作内容_浏览器为什么无法打开网页_查询网址域名_目前在哪个平台做推广好

一、题目

给你两个数组 nums1 和 nums2 。

请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。

数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。

二、思路

遇事不决就递归,左脚踩右脚是升天最好的方式。

首先,这道题常规思路找不到解决办法。那么这里我们可以知道nums1和nums2只有一个数的时候,最大内积就是两个元素之积。初值已经解决,那么下一步则是递推关系,f[i][j]是nums1前i个元素的子序列和nums2前j个元素的子序列的子序列最大点积,将f[i][j]转换为前面的历史计算结果,即可找到递推关系。当nums1[i]和nums2[j]组成点积时,f[i][j] = max(f[i-1][j-1],f[i-1]f[j-1]+xij,xij),不组成点积时,f[i][j] = max(f[i-1][j],f[i][j-1]),取两者最大值即可。

三、题解

class Solution:

    def maxDotProduct(self, nums1: List[int], nums2: List[int]) -> int:

        m,n = len(nums1),len(nums2)

        f = [[0]*n for _ in range(m)]

       

        for i in range(m):

            for j in range(n):

                xij = nums1[i]*nums2[j]

                f[i][j] = xij

                if i > 0:

                    f[i][j] = max(f[i][j],f[i-1][j])

                if j > 0:

                    f[i][j] = max(f[i][j],f[i][j-1])

                if i > 0 and j > 0:

                    f[i][j] = max(f[i][j],f[i-1][j-1]+xij)

        return f[m-1][n-1]

关键字:网店运营工作内容_浏览器为什么无法打开网页_查询网址域名_目前在哪个平台做推广好

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: