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 }
  • 相关阅读:
    Python远程连接主机之paramiko模块
    品德养成记
    打包命令tar
    Linux内存信息查看——free命令
    机器学习之线性代数
    Linux用户信息查询
    tcpdump命令
    netstat命令
    LED的基本认识与STC89C52中的LED
    keil新建工程及工程设置
  • 原文地址:https://www.cnblogs.com/strengthen/p/10745867.html
Copyright © 2011-2022 走看看