Конин Георгий/sum-of-subarray-minimums — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Новая страница: «==Задача== * Leetcode/sum-of-subarray-minimums ==Код== <source lang="python"> class Solution: def sumSubarrayMins(self, arr: List[int]) -> int:…»)
 
 
(не показана 1 промежуточная версия 1 участника)
Строка 31: Строка 31:
  
 
https://leetcode.com/problems/sum-of-subarray-minimums/submissions/1439106215/
 
https://leetcode.com/problems/sum-of-subarray-minimums/submissions/1439106215/
 +
 +
 +
[[Участник:StasFomin|StasFomin]] 02:21, 6 ноября 2024 (UTC): {{BadStyle}}
 +
 +
Плюс оформите подстраницей личной страницы! Вот, [https://discopal.ispras.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%9A%D0%BE%D0%BD%D0%B8%D0%BD_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D0%B9/k-th-smallest-prime-fraction&action=history переименовал одну из ваших], сообразите с остальными.

Текущая версия на 02:32, 6 ноября 2024

Задача

Код

class Solution:
    def sumSubarrayMins(self, arr: List[int]) -> int:
        stack=[]
        out=0
 
        for i in arr:
            if not stack:
                stack.append([i,1,0])
            else:
                cnt=0
                while stack and stack[-1][0]>i:
                    val,oc,r=stack.pop()
                    out+=(val*(cnt+oc))+(cnt*r*val)
                    cnt+=oc
                stack.append([i,1+cnt,cnt])
        cnt=0
 
        while stack:
            val,oc,r=stack.pop()
            out+=(val*(cnt+oc))+(cnt*r*val)
            cnt+=oc
        return out%((10**9)+7)

Submission

https://leetcode.com/problems/sum-of-subarray-minimums/submissions/1439106215/


StasFomin 02:21, 6 ноября 2024 (UTC):

Тут многое легко исправить автоформатером, а читаемость вашего питон-кода будет важна в других квестах курса.

BrokenSolution.png


Плюс оформите подстраницей личной страницы! Вот, переименовал одну из ваших, сообразите с остальными.