美文网首页
【教3妹学编程-算法题】将数组分成最小总代价的子数组 I

【教3妹学编程-算法题】将数组分成最小总代价的子数组 I

作者: 程序员小2 | 来源:发表于2024-02-15 09:54 被阅读0次
瑟瑟发抖

2哥 : 叮铃铃,3妹,过年干嘛呢,是不是逛吃逛吃,有没有长胖呢。
3妹:切,我妈张罗着要给我相亲呢。
2哥 : 相亲?哈哈哈哈
3妹:别笑了,我妈说跟我年龄相等的人都已经孩子上小学了,跟她年龄相等的人孙子最少都会打酱油了。
2哥 :哈哈哈哈,让我先笑一会儿
3妹:话说2哥过年在家里也刷题吗?
2哥:当然了,雷打不动。
3妹:好吧,还得是2哥🐂,我有几天懈怠了。
2哥:好吧,说到刷题啊,今天有一道“最小”的题目, 让我们先做一下吧~

吃瓜

题目:

给你一个长度为 n 的整数数组 nums 。

一个数组的 代价 是它的 第一个 元素。比方说,[1,2,3] 的代价是 1 ,[3,4,1] 的代价是 3 。

你需要将 nums 分成 3 个 连续且没有交集 的子数组。

请你返回这些子数组的 最小 代价 总和 。

示例 1:

输入:nums = [1,2,3,12]
输出:6
解释:最佳分割成 3 个子数组的方案是:[1] ,[2] 和 [3,12] ,总代价为 1 + 2 + 3 = 6 。
其他得到 3 个子数组的方案是:

  • [1] ,[2,3] 和 [12] ,总代价是 1 + 2 + 12 = 15 。
  • [1,2] ,[3] 和 [12] ,总代价是 1 + 3 + 12 = 16 。
    示例 2:

输入:nums = [5,4,3]
输出:12
解释:最佳分割成 3 个子数组的方案是:[5] ,[4] 和 [3] ,总代价为 5 + 4 + 3 = 12 。
12 是所有分割方案里的最小总代价。
示例 3:

输入:nums = [10,3,1,1]
输出:12
解释:最佳分割成 3 个子数组的方案是:[10,3] ,[1] 和 [1] ,总代价为 10 + 1 + 1 = 12 。
12 是所有分割方案里的最小总代价。

提示:

3 <= n <= 50
1 <= nums[i] <= 50

思路:

思考

维护最小值和第二小值

java代码:

class Solution {
    public int minimumCost(int[] nums) {
        int fi = Integer.MAX_VALUE, se = Integer.MAX_VALUE;
        for (int i = 1; i < nums.length; i++) {
            int x = nums[i];
            if (x < fi) {
                se = fi;
                fi = x;
            } else if (x < se) {
                se = x;
            }
        }
        return nums[0] + fi + se;
    }
}

相关文章

网友评论

      本文标题:【教3妹学编程-算法题】将数组分成最小总代价的子数组 I

      本文链接:https://www.haomeiwen.com/subject/cubeadtx.html