πŸ“ˆ Максимальная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… сдСлок с акциями

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

Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° срСднСго уровня слоТности Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Leetcode-Π·Π°Π΄Π°Ρ‡Ρƒ 122. Best Time to Buy and Sell Stock II

Π’ Π·Π°Π΄Π°Ρ‡Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΡƒΡŽ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… сдСлок ΠΊΡƒΠΏΠ»ΠΈ-ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π°ΠΊΡ†ΠΈΠ΅ΠΉ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ сдСлкой, здСсь ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ, извлСкая ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ растущСго ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Ρ†Π΅Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

А Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ сдСлки. Π₯отя явноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π½Π΅ΠΉ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ/ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Π½Π΅ трСбуСтся для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎ сути Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡ‹ (Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ) ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° Π½ΠΈΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ максимумы (Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ), суммируя ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ 121 (Best Time to Buy and Sell Stock)

  1. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ сдСлок: Π’ Π·Π°Π΄Π°Ρ‡Π΅ 121 Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° опСрация ΠΊΡƒΠΏΠ»ΠΈ-ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство сдСлок (с условиСм владСния Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ). Π­Ρ‚ΠΎ ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ мСняСт ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ β€” вмСсто поиска СдинствСнной максимальной Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΡ‹ собираСм всС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π½ΠΎΠ²Ρ‹Π΅ двиТСния.

  2. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Π—Π°Π΄Π°Ρ‡Π° 121 Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ отслСТивания глобального ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΈ максимальной Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ послС Π½Π΅Π³ΠΎ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ тСкущая Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ простым суммированиСм всСх Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΡ… сосСдних Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΠΎΠ»Π΅Π΅ прямолинСйным ΠΈ эффСктивным (хотя ΠΈ основанным Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅).

  3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹: Π’ Π·Π°Π΄Π°Ρ‡Π΅ с ΠΎΠ΄Π½ΠΎΠΉ сдСлкой максимальная ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ для [7,1,5,3,6,4] составляСт 5 (ΠΏΠΎΠΊΡƒΠΏΠΊΠ° Π·Π° 1, ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ° Π·Π° 6), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… сдСлках ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 7 (1β†’5 ΠΈ 3β†’6), дСмонстрируя ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ стратСгии Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ.

Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (ΠΌΠ΅Ρ‚ΠΎΠ΄ "ΠΏΠΈΠΊΠΎΠ² ΠΈ Π²ΠΏΠ°Π΄ΠΈΠ½")

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для хранСния ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ (totalProfit).

  2. ΠŸΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ массиву: Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дня, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ:

  • Если Ρ†Π΅Π½Π° сСгодня Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Π²Ρ‡Π΅Ρ€Π° (prices[i] > prices[i-1]), добавляСм Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ.

  1. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ.

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ "собираСм" всС Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΈ Ρ†Π΅Π½ΠΎΠ²ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ, Ρ‡Ρ‚ΠΎ эквивалСнтно мноТСствСнным ΠΏΠΎΠΊΡƒΠΏΠΊΠ°ΠΌ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ локальном ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ΅ ΠΈ максимумС.

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

text

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

  1. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: Алгоритм ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ массиву всСго ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, имСя Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O(n) ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ O(1).

  2. Π–Π°Π΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠœΡ‹ максимизируСм ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ, собирая всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ сосСдними днями.

  3. Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: РСшСниС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π»ΡŽΠ±Ρ‹Ρ… Ρ†Π΅Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ растущиС ΠΈ ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сцСнариСв, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство сдСлок, ΠΈ дСмонстрируСт, ΠΊΠ°ΠΊ простая стратСгия ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° финансовых Ρ€Ρ‹Π½ΠΊΠ°Ρ….

0