3010: 将数组分成最小总代价的子数组Ⅰ
题意:把数组分成三段,每一段取第一个数求和,问和的最小值是多少。
第一段的第一个数是确定的,即 nums[0]。
如果知道了第二段的第一个数的位置,和第三段的第一个数的位置,那么这个划分方案也就确定了。这两个下标可以在 [1,n−1] 中随意取。
所以问题变成求下标在 [1,n−1] 中的两个最小的数。
class Solution {
public:
int minimumCost(vector<int>& nums) {
sort(nums.begin()+1,nums.end());
int ans=nums[0]+nums[1]+nums[2];
return ans;
}
};