TGViewer
Python | LeetCode Python | LeetCode @easy_python_task · 9.04K subscribers
Post #2359 587
Задача: 1063. Number of Valid Subarrays
Сложность: hard

Дан целочисленный массив nums. Вернуть количество непустых подмассивов, в которых левый элемент не больше других элементов подмассива.

Подмассив — это непрерывная часть массива.

Пример:
Input: nums = [1,4,2,5,3]
Output: 11
Explanation: There are 11 valid subarrays: [1],[4],[2],[5],[3],[1,4],[2,5],[1,4,2],[2,5,3],[1,4,2,5],[1,4,2,5,3].


👨‍💻 Алгоритм:

1⃣нициализируйте переменную ans значением 0. Инициализируйте пустой стек st, который будет хранить индексы элементов в стеке.

2⃣Итерируйте по элементам массива nums для каждого индекса i: продолжайте извлекать элементы из стека st, пока стек не станет пустым или элемент nums[i] не станет больше элемента на вершине стека. Для каждого извлеченного элемента добавляйте количество подмассивов как i - st.top(). Поместите текущий индекс i в стек.

3⃣Извлеките все оставшиеся элементы из стека и для каждого рассмотрите размер nums как индекс следующего меньшего элемента. Соответственно, добавьте nums.size() - st.top() к переменной ans. Верните ans.

😎 Решение:
class Solution:
def validSubarrays(self, nums: List[int]) -> int:
ans = 0
st = []

for i in range(len(nums)):
while st and nums[i] < nums[st[-1]]:
ans += (i - st.pop())
st.append(i)

while st:
ans += (len(nums) - st.pop())

return ans


Ставь 👍 и забирай 📚 Базу знаний
  • 🔥 1
  • 💊 1
More from @easy_python_task
  1. Oct 10, 2026Post #2435
  2. Oct 10, 2026Задача: 1249. Minimum Remove to Make Valid Parentheses Сложность: medium Дана строка s из…
  3. Oct 9, 2026Post #2433
  4. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не п…
  5. Oct 4, 2026Задача: 958. Check Completeness of a Binary Tree Сложность: medium Дан корень бинарного де…
  6. Oct 4, 2026Задача: 949. Largest Time for Given Digits Сложность: medium Учитывая массив arr из 4 цифр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →