给你一个整数数组 nums
。你的任务是在每一步中执行以下操作之一,直到 nums
为空,从而移除 所有元素 :
nums
的前三个元素中选择任意两个元素并移除它们。此操作的成本为移除的两个元素中的 最大值 。nums
中剩下的元素少于三个,则一次性移除所有剩余元素。此操作的成本为剩余元素中的 最大值 。返回移除所有元素所需的最小成本。
示例 1
输入:nums = [6,2,8,4]
输出:12
解释:
初始时,nums = [6, 2, 8, 4]
。
nums[0] = 6
和 nums[2] = 8
,操作成本为 max(6, 8) = 8
。现在,nums = [2, 4]
。max(2, 4) = 4
。移除所有元素的成本为 8 + 4 = 12
。这是移除 nums
中所有元素的最小成本。所以输出 12。
示例 2
输入:nums = [2,1,3,3]
输出:5
解释:
初始时,nums = [2, 1, 3, 3]
。
nums[0] = 2
和 nums[1] = 1
,操作成本为 max(2, 1) = 2
。现在,nums = [3, 3]
。max(3, 3) = 3
。移除所有元素的成本为 2 + 3 = 5
。这是移除 nums
中所有元素的最小成本。因此,输出是 5。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 106
dp[i][j]
, where i
represents the last remaining element and j
represents the starting index of the current prefix.