zoukankan      html  css  js  c++  java
  • [Swift-2019力扣杯春季决赛]4. 有效子数组的数目

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10745867.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    给定一个整数数组 A,返回满足下面条件的 非空、连续 子数组的数目:

    子数组中,最左侧的元素不大于其他元素。

    示例 1:

    输入:[1,4,2,5,3]
    输出:11
    解释:有 11 个有效子数组,分别是:[1],[4],[2],[5],[3],[1,4],[2,5],[1,4,2],[2,5,3],[1,4,2,5],[1,4,2,5,3] 。
    

    示例 2:

    输入:[3,2,1]
    输出:3
    解释:有 3 个有效子数组,分别是:[3],[2],[1] 。
    

    示例 3:

    输入:[2,2,2]
    输出:6
    解释:有 6 个有效子数组,分别为是:[2],[2],[2],[2,2],[2,2],[2,2,2] 。

    提示:

    1. 1 <= A.length <= 50000
    2. 0 <= A[i] <= 100000

    848 ms

     1 class Solution {
     2     var ne:[Int] = [Int](repeating:0,count:50005)
     3     var st:[Int] = [Int](repeating:0,count:50005)
     4     var t:Int = 0
     5     func validSubarrays(_ nums: [Int]) -> Int {
     6         var n:Int = nums.count
     7         var ans:Int = 0
     8         st[0] = n
     9         for i in stride(from:(n - 1),through:0,by:-1)
    10         {
    11             while((t != 0) && nums[st[t]] >= nums[i])
    12             {
    13                 t -= 1
    14             }
    15             ne[i] = st[t]
    16             t += 1
    17             st[t] = i
    18             ans += ne[i] - i
    19         }
    20         return ans
    21     }
    22 }
  • 相关阅读:
    洛谷 P1591 阶乘数码
    洛谷 P2008 大朋友的数字
    洛谷 P1716 双调序列
    洛谷 P2309 loidc,卖卖萌
    洛谷 P1324 矩形分割
    洛谷 P2690 接苹果
    洛谷 P1239 计数器
    hdu_4352_XHXJ's LIS(数位DP+状态压缩)
    hdu_5648_DZY Loves Math
    hdu_5179_beautiful number(数位DP)
  • 原文地址:https://www.cnblogs.com/strengthen/p/10745867.html
Copyright © 2011-2022 走看看