📌  相关文章
📜  数组的所有可能子数组的最小元素的总和(1)

📅  最后修改于: 2023-12-03 15:40:04.011000             🧑  作者: Mango

所有可能子数组的最小元素的总和

给定一个整数数组,求出所有可能子数组的最小元素的总和。

算法思路
  1. 遍历数组,从第 i 个元素开始,找到所有以该元素为起点的子数组;
  2. 对于每个子数组,找出其中最小的元素;
  3. 将所有子数组的最小元素相加,即为所求答案。

时间复杂度:$O(n^2)$。

代码实现
def min_sum_of_all_subarrays(arr):
    n = len(arr)
    ans = 0
    for i in range(n):
        for j in range(i, n):
            ans += min(arr[i:j+1])
    return ans
示例
>>> arr = [1, 3, 2, 4]
>>> min_sum_of_all_subarrays(arr)
17
>>> # 解释:[1], [3], [2], [4], [1, 3], [3, 2], [2, 4], [1, 3, 2], [3, 2, 4], [1, 3, 2, 4] 的最小元素分别为 1, 3, 2, 4, 1, 2, 2, 1, 2, 1,它们的和为 17。