πŸ“ˆ Максимальная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ с ограничСниСм Π²Β Π΄Π²Π΅ сдСлки (leetcode 12

Допустим, Π²Ρ‹ стали Ρ‚Ρ€Π΅ΠΉΠ΄Π΅Ρ€ΠΎΠΌ Π½Π° ΠΎΠΆΠΈΠ²Π»Ρ‘Π½Π½ΠΎΠΉ Ρ„ΠΎΠ½Π΄ΠΎΠ²ΠΎΠΉ Π±ΠΈΡ€ΠΆΠ΅. Π£ вас Π΅ΡΡ‚ΡŒ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… сдСлок ΠΊΡƒΠΏΠ»ΠΈ-ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Π°ΠΊΡ†ΠΈΠΉ Π·Π° дСнь. Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ? Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ инвСсторы ΠΏΡ€ΠΈ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Π Π΅Ρ‡ΡŒ ΠΎ слоТной Π·Π°Π΄Π°Ρ‡Π΅ 123. Best Time to Buy and Sell Stock III

Π’ Π·Π°Π΄Π°Ρ‡Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠ°Ρ€Ρ‹ (ΠΏΠΎΠΊΡƒΠΏΠΊΠ°, ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°), Π³Π΄Π΅ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΠΊΡƒΠΏΠΊΠ° происходит послС ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. ΠŸΡ€ΠΈ этом суммарная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ этих Π΄Π²ΡƒΡ… сдСлок Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. НапримСр, для Ρ†Π΅Π½ [3,3,5,0,0,3,1,4] ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ сдСлки β€” (0β†’3) ΠΈ (1β†’4) с суммарной ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΡŽ 6.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ с Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ числом сдСлок, здСсь Π²Π°ΠΆΠ½ΠΎ Π½Π΅ просто ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС растущиС ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΈ, Π° Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄Π²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹Ρ…, соблюдая порядок ΠΈΡ… выполнСния. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π° всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ сдСлок ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎΠΉ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π—Π°Π΄Π°Ρ‡Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ слоТного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ суммированиС всСх ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сдСлки ΠΊΠ°ΠΊ Π΄ΠΎ, Ρ‚Π°ΠΊ ΠΈ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дня

  • ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹ сдСлок

  • Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния максимальной ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ всСго ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ сдСлки, Ссли вторая Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Π΄ΠΎΡ…ΠΎΠ΄

РСшСниС эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для отслСТивания ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… стратСгий с Ρ€Π°Π·Π½Ρ‹ΠΌ количСством ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ сдСлок.

Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (динамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для отслСТивания:

  • buy1β€” минимальная Ρ†Π΅Π½Π° послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ

  • profit1β€” максимальная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ

  • buy2β€” минимальная Ρ†Π΅Π½Π° послС Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ сдСлки)

  • profit2β€” общая максимальная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ послС Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ

2. ΠŸΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ массиву: Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†Π΅Π½Ρ‹ обновляСм значСния:

text

3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ profit2 β€” ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ послС Π΄Π²ΡƒΡ… сдСлок.

Python Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

text

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ 122

  1. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° количСство сдСлок: Π’ Π·Π°Π΄Π°Ρ‡Π΅ 122 ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство сдСлок, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” вмСсто простого суммирования всСх ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π²Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹Π΅ сдСлки.

  2. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°: РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ 122 ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n) с простой Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Π° 123 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ слоТного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° с динамичСским ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для отслСТивания Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сдСлок ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, хотя Ρ‚Π°ΠΊΠΆΠ΅ сохраняСт Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n).

  3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹: Для Ρ†Π΅Π½ [3,3,5,0,0,3,1,4]:

  • Π’ Π·Π°Π΄Π°Ρ‡Π΅ 122 ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ составила Π±Ρ‹ 5 (0β†’3 ΠΈ 1β†’4)

  • Π’ Π·Π°Π΄Π°Ρ‡Π΅ 123 ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ составляСт 6 (0β†’3 ΠΈ 1β†’4), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ двумя сдСлками ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Π—Π°Π΄Π°Ρ‡Π° 123 ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ситуации, ΠΊΠΎΠ³Π΄Π° брокСрскиС ограничСния ΠΈΠ»ΠΈ комиссии Π΄Π΅Π»Π°ΡŽΡ‚ частыС сдСлки Π½Π΅Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹ΠΌΠΈ, ΠΈ инвСстор Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² для Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ.

0