给你一个 循环 数组 nums 和一个整数 k。
将 nums 划分 为 最多 k 个子数组。由于 nums 是循环数组,这些子数组可以从数组末尾环绕回起点。
子数组的 范围 定义为其 最大值 与 最小值 的差值。划分的 得分 是所有子数组范围的总和。
返回所有循环划分方案中可能获得的 最大得分 。
子数组 是数组中的一个连续非空的元素序列。
示例 1:
输入: nums = [1,2,3,3], k = 2
输出: 3
解释:
nums 划分为 [2, 3] 和 [3, 1](环绕)。[2, 3] 的范围是 max(2, 3) - min(2, 3) = 3 - 2 = 1。[3, 1] 的范围是 max(3, 1) - min(3, 1) = 3 - 1 = 2。1 + 2 = 3。示例 2:
输入: nums = [1,2,3,3], k = 1
输出: 2
解释:
nums 划分为 [1, 2, 3, 3]。[1, 2, 3, 3] 的范围是 max(1, 2, 3, 3) - min(1, 2, 3, 3) = 3 - 1 = 2。2。示例 3:
输入: nums = [1,2,3,3], k = 4
输出: 3
解释:
与示例 1 相同,将 nums 划分为 [2, 3] 和 [3, 1]。注意,可以将 nums 划分为少于 k 个子数组。
提示:
1 <= nums.length <= 10001 <= nums[i] <= 1091 <= k <= nums.length