LeetCode 2104. 子数组范围和(单调栈)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 2104. 子数组范围和(单调栈)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個整數數組 nums 。nums 中,子數組的 范圍 是子數組中最大元素和最小元素的差值。
返回 nums 中 所有 子數組范圍的 和 。
子數組是數組中一個連續 非空 的元素序列。
示例 1: 輸入:nums = [1,2,3] 輸出:4 解釋:nums 的 6 個子數組如下所示: [1],范圍 = 最大 - 最小 = 1 - 1 = 0 [2],范圍 = 2 - 2 = 0 [3],范圍 = 3 - 3 = 0 [1,2],范圍 = 2 - 1 = 1 [2,3],范圍 = 3 - 2 = 1 [1,2,3],范圍 = 3 - 1 = 2 所有范圍的和是 0 + 0 + 0 + 1 + 1 + 2 = 4示例 2: 輸入:nums = [1,3,3] 輸出:4 解釋:nums 的 6 個子數組如下所示: [1],范圍 = 最大 - 最小 = 1 - 1 = 0 [3],范圍 = 3 - 3 = 0 [3],范圍 = 3 - 3 = 0 [1,3],范圍 = 3 - 1 = 2 [3,3],范圍 = 3 - 3 = 0 [1,3,3],范圍 = 3 - 1 = 2 所有范圍的和是 0 + 0 + 0 + 2 + 0 + 2 = 4示例 3: 輸入:nums = [4,-2,-3,4,1] 輸出:59 解釋:nums 中所有子數組范圍的和是 59提示: 1 <= nums.length <= 1000 -10^9 <= nums[i] <= 10^9來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sum-of-subarray-ranges
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 單調棧,獲取每個數字作為最大或者最小的左右極限位置
- 單獨考慮每個數字可以作為最大值或者最小值的次數,到左右極限位置處的個數相乘種組合
140 ms 15.2 MB Python3
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 2104. 子数组范围和(单调栈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1676. 二叉树的最
- 下一篇: LeetCode LCP 34. 二叉树