2022-04-09:给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m , 数组下标 从 1 开始 计数。 初始时,你的分数为 0 。 你需要执行恰

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-04-09:给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m , 数组下标 从 1 开始 计数。 初始时,你的分数为 0 。 你需要执行恰相关的知识,希望对你有一定的参考价值。

2022-04-09:给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m ,
数组下标 从 1 开始 计数。
初始时,你的分数为 0 。
你需要执行恰好 m 步操作。在第 i 步操作(从 1 开始 计数)中,需要:
选择数组 nums 开头处或者末尾处 的整数 x 。
你获得 multipliers[i] * x 分,并累加到你的分数中。
将 x 从数组 nums 中移除。
在执行 m 步操作后,返回 最大 分数。
力扣1770。

答案2022-04-09:

样本对应模型。

代码用golang编写。代码如下:

package main

import "fmt"

func main() 
	nums := []int-5, -3, -3, -2, 7, 1
	multipliers := []int-10, -5, 3, 4, 6
	ret := maximumScore2(nums, multipliers)
	fmt.Println(ret)


func maximumScore2(A, B []int) int 
	if len(A) == 0 || len(B) == 0 || len(A) < len(B) 
		return 0
	
	N := len(A)
	M := len(B)
	dp := make([][]int, M+1)
	for i := 0; i < M+1; i++ 
		dp[i] = make([]int, M+1)
	
	for L := M - 1; L >= 0; L-- 
		for j := L + 1; j <= M; j++ 
			R := N - M + j - 1
			indexB := L + N - R - 1
			dp[L][j] = getMax(A[L]*B[indexB]+dp[L+1][j], A[R]*B[indexB]+dp[L][j-1])
		
	
	return dp[0][M]


func getMax(a, b int) int 
	if a > b 
		return a
	 else 
		return b
	


执行结果如下:


左神java代码

以上是关于2022-04-09:给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m , 数组下标 从 1 开始 计数。 初始时,你的分数为 0 。 你需要执行恰的主要内容,如果未能解决你的问题,请参考以下文章

2022-09-13:给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽。 同时给你一个二维整数数组 prices ,其中 prices[i] = [hi, wi, pricei] 表示你可以

力扣——合并两个有序数组

LeetCode:合并两个有序数组

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:合并两个有序数组

ARTS Week 10

hdu-1711(hash)