PHP | LeetCode
Kanalga Telegramβda oβtish
Π‘Π°ΠΉΡ: https://easyoffer.ru/ ΠΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ: t.me/+xGeAw6ckJ4liYzQy ΠΠΎΠ½ΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @easyoffer_adv
Ko'proq ko'rsatish1 355
Obunachilar
Ma'lumot yo'q24 soatlar
-67 kunlar
-930 kunlar
Postlar arxiv
1 355
ΠΠ°Π΄Π°ΡΠ°: 725. Split Linked List in Parts
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π£ΡΠΈΡΡΠ²Π°Ρ Π³ΠΎΠ»ΠΎΠ²Ρ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k, ΡΠ°Π·Π±Π΅ΠΉΡΠ΅ ΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π° k ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠ»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ: Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΉΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈ Π±ΡΠ΄ΡΡ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ. Π§Π°ΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π²ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΠΈ ΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ ΡΠ°Π½ΡΡΠ΅, Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΠΉ ΡΠ°ΡΡΡΠΌ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΌΡΡ ΠΏΠΎΠ·ΠΆΠ΅. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· k ΡΠ°ΡΡΠ΅ΠΉ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: head = [1,2,3], k = 5 Output: [[1],[2],[3],[],[]]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. 2β£ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π»ΠΈΠ½Π½Π΅Π΅. 3β£Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠ°ΡΡΠΈ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class ListNode {
public $val = 0;
public $next = null;
function __construct($val = 0, $next = null) {
$this->val = $val;
$this->next = $next;
}
}
function splitListToParts($root, $k) {
$length = 0;
$node = $root;
while ($node != null) {
$length++;
$node = $node->next;
}
$partLength = intdiv($length, $k);
$extraParts = $length % $k;
$parts = array_fill(0, $k, null);
$node = $root;
for ($i = 0; $i < $k; $i++) {
$partHead = $node;
$partSize = $partLength + ($i < $extraParts ? 1 : 0);
for ($j = 0; $j < $partSize - 1; $j++) {
if ($node != null) {
$node = $node->next;
}
}
if ($node != null) {
$nextPart = $node->next;
$node->next = null;
$node = $nextPart;
}
$parts[$i] = $partHead;
}
return $parts;
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 301. Remove Invalid Parentheses
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°Π½Π° ΡΡΡΠΎΠΊΠ° s, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ Π±ΡΠΊΠ²Ρ. Π£Π΄Π°Π»ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅Π²Π΅ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠΎΠΊΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΉ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ²Π΅Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "()())()" Output: ["(())()","()()()"]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΡ Ρ ΡΠ°ΠΌΠΎΠΉ Π»Π΅Π²ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄Π²ΠΈΠ³Π°ΠΉΡΠ΅ΡΡ Π²ΠΏΡΠ°Π²ΠΎ. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ index, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ left_count ΠΈ right_count Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. 2β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°: ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» (S[i]) Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΊ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ (S[i] == '(' ΠΈΠ»ΠΈ S[i] == ')'), Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: Π»ΠΈΠ±ΠΎ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ ΡΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°ΠΊ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ, Π»ΠΈΠ±ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. 3β£ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°: ΠΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ, ΠΏΡΠΎΠ²Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ left_count ΠΈ right_count (Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π²Π½Ρ). ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΉ (rem_count) ΠΈ ΡΡΠ°Π²Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ rem_count ΠΌΠ΅Π½ΡΡΠ΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
private $validExpressions;
private $minimumRemoved;
function __construct() {
$this->validExpressions = [];
$this->minimumRemoved = PHP_INT_MAX;
}
private function reset() {
$this->validExpressions = [];
$this->minimumRemoved = PHP_INT_MAX;
}
private function recurse($s, $index, $leftCount, $rightCount, $expression, $removedCount) {
if ($index === strlen($s)) {
if ($leftCount === $rightCount) {
if ($removedCount <= $this->minimumRemoved) {
$possibleAnswer = implode('', $expression);
if ($removedCount < $this->minimumRemoved) {
$this->validExpressions = [];
$this->minimumRemoved = $removedCount;
}
$this->validExpressions[$possibleAnswer] = true;
}
}
return;
}
$currentCharacter = $s[$index];
$length = count($expression);
if ($currentCharacter !== '(' && $currentCharacter !== ')') {
array_push($expression, $currentCharacter);
$this->recurse($s, $index + 1, $leftCount, $rightCount, $expression, $removedCount);
array_pop($expression);
} else {
$this->recurse($s, $index + 1, $leftCount, $rightCount, $expression, $removedCount + 1);
array_push($expression, $currentCharacter);
if ($currentCharacter === '(') {
$this->recurse($s, $index + 1, $leftCount + 1, $rightCount, $expression, $removedCount);
} else if ($rightCount < $leftCount) {
$this->recurse($s, $index + 1, $leftCount, $rightCount + 1, $expression, $removedCount);
}
array_pop($expression);
}
}
function removeInvalidParentheses($s) {
$this->reset();
$this->recurse($s, 0, 0, 0, [], 0);
return array_keys($this->validExpressions);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 1235. Maximum Profit in Job Scheduling
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
Π£ Π½Π°Ρ Π΅ΡΡΡ n Π·Π°Π΄Π°Π½ΠΈΠΉ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΡ startTime[i] Π΄ΠΎ endTime[i], ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΡΠΈΠ±ΡΠ»Ρ profit[i]. ΠΠ°ΠΌ Π΄Π°Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ startTime, endTime ΠΈ profit, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ±ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ Π² ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π΄Π²ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΠΌΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ X, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ X.
ΠΡΠΈΠΌΠ΅Ρ:
Input: startTime = [1,2,3,3], endTime = [3,4,5,6], profit = [50,10,40,70] Output: 120π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΠΉ: Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ±ΡΠ°Π½Ρ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ. 2β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² dp, Π³Π΄Π΅ dp[i] Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ±ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ i Π·Π°Π΄Π°Π½ΠΈΠΉ. 3β£ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ Π²Π·ΡΡΡ Π΅Π³ΠΎ, Π»ΠΈΠ±ΠΎ Π½Π΅ Π²Π·ΡΡΡ. ΠΡΠ»ΠΈ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΡΠΈΠ±ΡΠ»Ρ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΈΠ±ΡΠ»ΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ. ΠΠ»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
function jobScheduling($startTime, $endTime, $profit) {
$jobs = [];
for ($i = 0; $i < count($startTime); $i++) {
$jobs[] = [$endTime[$i], $startTime[$i], $profit[$i]];
}
usort($jobs, function($a, $b) {
return $a[0] - $b[0];
});
$dp = [[0, 0]];
foreach ($jobs as [$e, $s, $p]) {
$i = 0;
while ($i < count($dp) && $dp[$i][0] <= $s) $i++;
$newProfit = $dp[$i - 1][1] + $p;
if ($newProfit > $dp[count($dp) - 1][1]) {
$dp[] = [$e, $newProfit];
}
}
return $dp[count($dp) - 1][1];
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 210. Course Schedule II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ numCourses ΠΊΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΉΡΠΈ, ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΎΡ 0 Π΄ΠΎ numCourses - 1. ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² prerequisites, Π³Π΄Π΅ prerequisites[i] = [ai, bi] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΉΡΠΈ ΠΊΡΡΡ bi, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π·ΡΡΡ ΠΊΡΡΡ ai.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΠ° [0, 1] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΡΡΡΠ° 0 ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ ΠΊΡΡΡ 1.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΉΡΠΈ, ΡΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΊΡΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ², Π²Π΅ΡΠ½ΠΈΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
. ΠΡΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΊΡΡΡΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠΈΠΌΠ΅Ρ:
Input: numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]] Output: [0,2,1,3] ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅: ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ 4 ΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈ. Π§ΡΠΎΠ±Ρ Π²Π·ΡΡΡ ΠΊΡΡΡ 3, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΎΠ±Π° ΠΊΡΡΡΠ° 1 ΠΈ 2. ΠΠ±Π° ΠΊΡΡΡΠ° 1 ΠΈ 2 Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π·ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΠΊΡΡΡ 0. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ² ΠΊΡΡΡΠΎΠ² β [0,1,2,3]. ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ β [0,2,1,3].π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠ°: ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΡΠ΅ΠΊ S, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΡΡΡΠΎΠ² Π² Π½Π°ΡΠ΅ΠΌ Π³ΡΠ°ΡΠ΅. ΠΠΎΡΡΡΠΎΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ°ΡΡ ΡΠ΅Π±Π΅Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π΅. ΠΠ°ΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ° Π²ΠΈΠ΄Π° [a, b] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΡΡΡ b Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½, ΡΡΠΎΠ±Ρ Π²Π·ΡΡΡ ΠΊΡΡΡ a. ΠΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ΅Π±ΡΠΎ Π²ΠΈΠ΄Π° b β a. Π£ΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. 2β£ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΠΈΡΠΊΠ° Π² Π³Π»ΡΠ±ΠΈΠ½Ρ (DFS): ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π² Π½Π°ΡΠ΅ΠΌ Π³ΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ (DFS), Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ·Π΅Π» Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΠΏΠΎΡΠ΅ΡΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ DFS Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ·Π»Π° N. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΠΎΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅Π΄Π΅ΠΉ ΡΠ·Π»Π° N, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ. 3β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ·Π»ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅Π΄Π΅ΠΉ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ·Π΅Π» N Π² ΡΡΠ΅ΠΊ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ΅ΠΊ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. ΠΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ·Π΅Π» N Π² ΡΡΠ΅ΠΊ, Π²ΡΠ΅ ΡΠ·Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΡΠ·Π΅Π» N Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠ° (ΡΡΠ΅Π΄ΠΈ Π΄ΡΡΠ³ΠΈΡ ), ΡΠΆΠ΅ Π±ΡΠ΄ΡΡ Π² ΡΡΠ΅ΠΊΠ΅. ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² ΠΏΡΠΎΡΡΠΎ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ·Π»Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ Π² ΡΡΠ΅ΠΊΠ΅ ΠΎΡ Π²Π΅ΡΡΠΈΠ½Ρ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
const WHITE = 1;
const GRAY = 2;
const BLACK = 3;
public function findOrder($numCourses, $prerequisites) {
$isPossible = true;
$color = array_fill(0, $numCourses, self::WHITE);
$adjList = [];
$topologicalOrder = [];
foreach ($prerequisites as $relation) {
list($dest, $src) = $relation;
if (!isset($adjList[$src])) {
$adjList[$src] = [];
}
$adjList[$src][] = $dest;
}
for ($i = 0; $i < $numCourses && $isPossible; $i++) {
if ($color[$i] == self::WHITE) {
$this->dfs($i, $color, $adjList, $isPossible, $topologicalOrder);
}
}
if ($isPossible) {
$order = array_reverse($topologicalOrder);
return $order;
} else {
return [];
}
}
private function dfs($node, &$color, &$adjList, &$isPossible, &$topologicalOrder) {
if (!$isPossible) return;
$color[$node] = self::GRAY;
if (isset($adjList[$node])) {
foreach ($adjList[$node] as $neighbor) {
if ($color[$neighbor] == self::WHITE) {
$this->dfs($neighbor, $color, $adjList, $isPossible, $topologicalOrder);
} else if ($color[$neighbor] == self::GRAY) {
$isPossible = false;
}
}
}
$color[$node] = self::BLACK;
$topologicalOrder[] = $node;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 401. Binary Watch
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΡΡ ΠΈΠΌΠ΅ΡΡ 4 ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° ΡΠ²Π΅ΡΡ
Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ² (0-11) ΠΈ 6 ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ² ΡΠ½ΠΈΠ·Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΡΡ (0-59). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: turnedOn = 1 Output: ["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ: ΠΠ΅ΡΠ΅Π±Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΠΎΠ² ΠΈ ΠΌΠΈΠ½ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΅Π΄ΠΈΠ½ΠΈΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π°. 2β£ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π³ΠΎΡΡΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ²: ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΡΡΠΌΠΌΠ° Π΅Π΄ΠΈΠ½ΠΈΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ°ΡΠΎΠ² ΠΈ ΠΌΠΈΠ½ΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π³ΠΎΡΡΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠ². 3β£Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠ°ΡΠΎΠ² ΠΈ ΠΌΠΈΠ½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ "ΡΠ°ΡΡ:ΠΌΠΈΠ½ΡΡΡ" ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function readBinaryWatch($turnedOn) {
$results = [];
for ($h = 0; $h < 12; $h++) {
for ($m = 0; $m < 60; $m++) {
if (substr_count(decbin($h), '1') + substr_count(decbin($m), '1') == $turnedOn) {
$results[] = sprintf("%d:%02d", $h, $m);
}
}
}
return $results;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 600. Non-negative Integers without Consecutive Ones
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: Hard
ΠΠ°Π½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0, n], Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
Π΅Π΄ΠΈΠ½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 5 Output: 5 Explanation: Here are the non-negative integers <= 5 with their corresponding binary representations: 0 : 0 1 : 1 2 : 10 3 : 11 4 : 100 5 : 101 Among them, only integer 3 disobeys the rule (two consecutive ones) and the other 5 satisfy the rule.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΎΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ΅ Π²ΡΠ΅Ρ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ num. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΠ΅Π» Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ. 2β£Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ 1 Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ x (ΡΡΠΈΡΠ°Ρ ΠΎΡ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ°ΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°), Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΈΡΠ»Π΅ n, ΠΏΠΎΡΡΡΠΏΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΡ 1 xβ1 ΡΠ°Π· Π²Π»Π΅Π²ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ y, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ 1 ΡΠΎΠ»ΡΠΊΠΎ Π½Π° x-ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π ΡΠΈΡΠ»Π° n ΠΈ y Π΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ 1 ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ n ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 1 Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ x. 3β£Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0, n], Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function findIntegers($num) {
$count = 0;
for ($i = 0; $i <= $num; $i++) {
if ($this->check($i)) {
$count++;
}
}
return $count;
}
function check($n) {
$i = 31;
while ($i > 0) {
if (($n & (1 << $i)) != 0 && ($n & (1 << ($i - 1))) != 0) {
return false;
}
$i--;
}
return true;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 587. Erect the Fence
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² trees, Π³Π΄Π΅ trees[i] = [xi, yi] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° Π² ΡΠ°Π΄Ρ.
ΠΠ³ΡΠ°Π΄ΠΈΡΠ΅ Π²Π΅ΡΡ ΡΠ°Π΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π²Π΅ΡΠ΅Π²ΠΊΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄ΠΎΡΠΎΠ³ΠΎ. Π‘Π°Π΄ Ρ
ΠΎΡΠΎΡΠΎ ΠΎΠ³ΠΎΡΠΎΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½Ρ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΡΠΎΡΠ½ΠΎ Π½Π° ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΠ΅ ΠΎΠ³ΡΠ°Π΄Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ²Π΅Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: trees = [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]] Output: [[1,1],[2,0],[4,2],[3,3],[2,4]] Explanation: All the trees will be on the perimeter of the fence except the tree at [2, 2], which will be inside the fence.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ: ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΠΎ ΠΈΡ x-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ, Π° Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ x-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΏΠΎ y-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ. ΠΠΎΡΡΡΠΎΠΉΡΠ΅ Π½ΠΈΠΆΠ½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠΎΡΠΊΠΈ ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΈ ΡΠ΄Π°Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡ. 2β£ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡ Π½Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ: ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π²Π΅ΡΡ Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ. ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡ. 3β£Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ HashSet, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΠ΅ΡΡ ΡΠΎΡΠΊΠΈ ΠΈΠ· ΡΡΠ΅ΠΊΠ°. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
private function orientation($p, $q, $r) {
return ($q[1] - $p[1]) * ($r[0] - $q[0]) - ($q[0] - $p[0]) * ($r[1] - $q[1]);
}
function outerTrees($points) {
usort($points, function($a, $b) {
return $a[0] === $b[0] ? $a[1] - $b[1] : $a[0] - $b[0];
});
$hull = [];
foreach ($points as $point) {
while (count($hull) >= 2 && $this->orientation($hull[count($hull) - 2], $hull[count($hull) - 1], $point) > 0) {
array_pop($hull);
}
$hull[] = $point;
}
array_pop($hull);
for ($i = count($points) - 1; $i >= 0; $i--) {
while (count($hull) >= 2 && $this->orientation($hull[count($hull) - 2], $hull[count($hull) - 1], $points[$i]) > 0) {
array_pop($hull);
}
$hull[] = $points[$i];
}
$uniqueHull = [];
foreach ($hull as $h) {
$uniqueHull[implode(',', $h)] = $h;
}
return array_values($uniqueHull);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 269. Alien Dictionary
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΠΎΠΏΠ»Π°Π½Π΅ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ Π°Π»ΡΠ°Π²ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±ΡΠΊΠ² Π² Π½Π΅ΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½.
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ words ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ½ΠΎΠΏΠ»Π°Π½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. Π£ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ Π² words ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°.
ΠΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Π² words Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ Π±ΡΠΊΠ², Π²Π΅ΡΠ½ΠΈΡΠ΅ "".
Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
Π±ΡΠΊΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠΏΠ»Π°Π½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π² Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ
.
ΠΡΠΈΠΌΠ΅Ρ:
Input: words = ["wrt","wrf","er","ett","rftt"] Output: "wertf"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ: ΠΠ·Π²Π»Π΅ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ ΠΈΠ· ΡΠ»ΠΎΠ². ΠΡΡΠ°Π²ΠΈΡΡ ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. 2β£ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΠΈΡΠ»Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠ΅Π±Π΅Ρ: ΠΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠ΅Π±Π΅Ρ (in-degree) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠΎΡΡΡΠΎΠΈΡΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ΅Π±ΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΡΠΊΠ²Ρ. 3β£ΠΠ±Ρ ΠΎΠ΄ Π² ΡΠΈΡΠΈΠ½Ρ (BFS): ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ in-degree. ΠΡΠΏΠΎΠ»Π½ΡΡΡ BFS, Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π±ΡΠΊΠ²Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ in-degree ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΏΡΡΡΠΎΠΉ. ΠΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
function alienOrder($words) {
$adjList = [];
$inDegree = [];
foreach ($words as $word) {
foreach (str_split($word) as $char) {
$inDegree[$char] = 0;
}
}
for ($i = 0; $i < count($words) - 1; $i++) {
$firstWord = $words[$i];
$secondWord = $words[$i + 1];
for ($j = 0; $j < min(strlen($firstWord), strlen($secondWord)); $j++) {
$c = $firstWord[$j];
$d = $secondWord[$j];
if ($c !== $d) {
if (!isset($adjList[$c])) {
$adjList[$c] = [];
}
if (!in_array($d, $adjList[$c])) {
$adjList[$c][] = $d;
$inDegree[$d]++;
}
break;
}
}
if (strlen($secondWord) < strlen($firstWord) && strpos($firstWord, $secondWord) === 0) {
return "";
}
}
$output = [];
$queue = [];
foreach ($inDegree as $char => $degree) {
if ($degree == 0) {
$queue[] = $char;
}
}
while (!empty($queue)) {
$c = array_shift($queue);
$output[] = $c;
if (isset($adjList[$c])) {
foreach ($adjList[$c] as $d) {
$inDegree[$d]--;
if ($inDegree[$d] == 0) {
$queue[] = $d;
}
}
}
}
if (count($output) < count($inDegree)) {
return "";
}
return implode("", $output);
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 421. Maximum XOR of Two Numbers in an Array
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ nums[i] XOR nums[j], Π³Π΄Π΅ 0 <= i <= j < n.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [3,10,5,25,2,8] Output: 28 Explanation: The maximum result is 5 XOR 25 = 28.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² L Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ Π΄Π»ΠΈΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ max_xor = 0. 2β£ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΈΠΊΠ» ΠΎΡ i = Lβ1 Π΄ΠΎ i = 0 (ΠΎΡ ΡΠ°ΠΌΠΎΠ³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π±ΠΈΡΠ° Lβ1 Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π±ΠΈΡΠ° 0): Π‘Π΄Π²ΠΈΠ³Π°ΠΉΡΠ΅ max_xor Π²Π»Π΅Π²ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±ΠΈΡ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ curr_xor = max_xor | 1, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² 1 Π² ΡΠ°ΠΌΠΎΠΌ ΠΏΡΠ°Π²ΠΎΠΌ Π±ΠΈΡΠ΅ max_xor. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ curr_xor, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ. 3β£ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ Π΄Π»ΠΈΠ½Ρ Lβi, ΠΈΡΠ΅ΡΠΈΡΡΡ ΠΏΠΎ nums: ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π² HashSet ΠΏΡΠ΅ΡΠΈΠΊΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° Π΄Π»ΠΈΠ½ΠΎΠΉ Lβi: num >> i. ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°ΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ curr_xor, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ : p1 ^ p2 == curr_xor. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΠΌΠΎΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ XOR p1 ^ p2 ^ p2 = p1, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ p1 == curr_xor ^ p2 ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ p, Π΅ΡΠ»ΠΈ curr_xor ^ p Π΅ΡΡΡ Π² ΠΏΡΠ΅ΡΠΈΠΊΡΠ°Ρ . ΠΡΠ»ΠΈ ΡΠ°ΠΊ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ max_xor ΡΠ°Π²Π½ΡΠΌ curr_xor, Ρ.Π΅. ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ 1-Π±ΠΈΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΏΡΠ°Π²ΠΎΠΌ Π±ΠΈΡΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΡΡΡ max_xor ΠΎΡΡΠ°Π²ΠΈΡ 0-Π±ΠΈΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΏΡΠ°Π²ΠΎΠΌ Π±ΠΈΡΠ΅. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function findMaximumXOR($nums) {
$maxNum = $nums[0];
foreach ($nums as $num) {
if ($num > $maxNum) {
$maxNum = $num;
}
}
$L = strlen(decbin($maxNum));
$maxXor = 0;
for ($i = $L - 1; $i >= 0; $i--) {
$maxXor <<= 1;
$currXor = $maxXor | 1;
$prefixes = [];
foreach ($nums as $num) {
$prefixes[$num >> $i] = true;
}
foreach ($prefixes as $p => $true) {
if (isset($prefixes[$currXor ^ $p])) {
$maxXor = $currXor;
break;
}
}
}
return $maxXor;
}
}
?>
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 1275. Find Winner on a Tic Tac Toe Game
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
Π ΠΈΠ³ΡΡ "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ" ΠΈΠ³ΡΠ°ΡΡ Π΄Π²Π° ΠΈΠ³ΡΠΎΠΊΠ° A ΠΈ B Π½Π° ΡΠ΅ΡΠΊΠ΅ 3 x 3. ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ" ΡΠ°ΠΊΠΎΠ²Ρ: ΠΈΠ³ΡΠΎΠΊΠΈ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ ' '. ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ³ΡΠΎΠΊ A Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ "X", Π° Π²ΡΠΎΡΠΎΠΉ ΠΈΠ³ΡΠΎΠΊ B - "O". Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ "X" ΠΈ "O" Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΡ, Π° Π½Π΅ Π² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅.
ΠΠ³ΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
(Π½Π΅ΠΏΡΡΡΡΡ
) ΡΠΈΠΌΠ²ΠΎΠ»Π° Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΡ ΡΡΡΠΎΠΊΡ, ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ. ΠΠ³ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ Π½Π΅ΠΏΡΡΡΡΠ΅. ΠΠΎΠ»ΡΡΠ΅ Ρ
ΠΎΠ΄ΠΎΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ³ΡΠ°Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°. Π£ΡΠΈΡΡΠ²Π°Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² moves, Π³Π΄Π΅ moves[i] = [rowi, coli] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ i-ΠΉ Ρ
ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΡΠ³ΡΠ°Π½ Π½Π° ΡΠ΅ΡΠΊΠ΅[rowi][coli]. Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ ΠΈΠ³ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ (A ΠΈΠ»ΠΈ B). ΠΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π²Π½ΠΈΡΡΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ "ΠΠΈΡΡΡ". ΠΡΠ»ΠΈ Π΅ΡΠ΅ Π΅ΡΡΡ Ρ
ΠΎΠ΄Ρ Π΄Π»Ρ ΠΈΠ³ΡΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ "Pending". ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Ρ
ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ (Ρ.Π΅. ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΈΠ³ΡΡ Π² ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ), ΡΠ΅ΡΠΊΠ° ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΡΡΠ°, ΠΈ A Π±ΡΠ΄Π΅Ρ ΠΈΠ³ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: moves = [[0,0],[2,0],[1,1],[2,1],[2,2]] Output: "A"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΡΡΡ 3x3 ΡΠ΅ΡΠΊΡ. 2β£ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ Ρ ΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Ρ ΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ³ΡΠΎΠΊΠΎΠ² A ΠΈ B. 3β£ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅, Π΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ Π²ΡΠ΅ Ρ ΠΎΠ΄Ρ ΡΠ΄Π΅Π»Π°Π½Ρ ΠΈ Π½Π΅Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π»ΠΈ ΠΈΠ³ΡΠ° Π²Π½ΠΈΡΡΡ ΠΈΠ»ΠΈ Π΅ΡΠ΅ Π΅ΡΡΡ Ρ ΠΎΠ΄Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
function tictactoe($moves) {
$grid = array_fill(0, 3, array_fill(0, 3, ''));
for ($i = 0; $i < count($moves); $i++) {
$r = $moves[$i][0];
$c = $moves[$i][1];
$grid[$r][$c] = $i % 2 == 0 ? 'X' : 'O';
}
for ($i = 0; $i < 3; $i++) {
if ($grid[$i][0] == $grid[$i][1] && $grid[$i][1] == $grid[$i][2] && $grid[$i][0] != '')
return $grid[$i][0] == 'X' ? 'A' : 'B';
if ($grid[0][$i] == $grid[1][$i] && $grid[1][$i] == $grid[2][$i] && $grid[0][$i] != '')
return $grid[0][$i] == 'X' ? 'A' : 'B';
}
if ($grid[0][0] == $grid[1][1] && $grid[1][1] == $grid[2][2] && $grid[0][0] != '')
return $grid[0][0] == 'X' ? 'A' : 'B';
if ($grid[0][2] == $grid[1][1] && $grid[1][1] == $grid[2][0] && $grid[0][2] != '')
return $grid[0][2] == 'X' ? 'A' : 'B';
return count($moves) == 9 ? 'Draw' : 'Pending';
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 273. Integer to English Words
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ num Π² Π΅Π³ΠΎ ΡΠ»ΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: num = 123 Output: "One Hundred Twenty Three"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΡΠ΅Π» Π΄ΠΎ 20 ΠΈ ΠΊΡΠ°ΡΠ½ΡΡ 10 Π΄ΠΎ 90: Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠΈ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 19 ΠΈ Π΄Π»Ρ ΠΊΡΠ°ΡΠ½ΡΡ 10 ΠΎΡ 20 Π΄ΠΎ 90. ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΡΡΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ, ΡΡΠ°Π·Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. 2β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΡΠ΅Π½, ΡΡΡΡΡ, ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΈ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ΠΎΠ²: Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎ Π½Π° Π³ΡΡΠΏΠΏΡ ΠΏΠΎ ΡΡΠΈ ΡΠΈΡΡΡ (Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΡΡΡΡΡΠΈ, ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ, ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄Ρ). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 999. 3β£Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: Π‘ΠΎΠ±ΡΠ°ΡΡ ΡΠ»ΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π³ΡΡΠΏΠΏ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΡΠΈΠΊΡΡ (ΡΡΡΡΡΠΈ, ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ, ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄Ρ). Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΡΡΠΈ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ, ΡΠ΄Π°Π»ΠΈΠ² Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
private $belowTwenty = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"];
private $tens = ["", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"];
private $thousands = ["", "Thousand", "Million", "Billion"];
function numberToWords($num) {
if ($num == 0) return "Zero";
$result = "";
$i = 0;
while ($num > 0) {
if ($num % 1000 != 0) {
$result = $this->helper($num % 1000) . $this->thousands[$i] . " " . $result;
}
$num = intval($num / 1000);
$i++;
}
return trim($result);
}
private function helper($num) {
if ($num == 0) return "";
else if ($num < 20) return $this->belowTwenty[$num] . " ";
else if ($num < 100) return $this->tens[intval($num / 10)] . " " . $this->helper($num % 10);
else return $this->belowTwenty[intval($num / 100)] . " Hundred " . $this->helper($num % 100);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 1356. Sort Integers by The Number of 1 Bits
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² arr. ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠΈΡΠ»Π° Π΅Π΄ΠΈΠ½ΠΈΡ Π² ΠΈΡ
Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π° Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ Π΄Π²ΡΡ
ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ΅Π» ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ, ΠΎΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΡ
ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: arr = [1024,512,256,128,64,32,16,8,4,2,1] Output: [1,2,4,8,16,32,64,128,256,512,1024] Explantion: All integers have 1 bit in the binary representation, you should just sort them in ascending order.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π΅Π΄ΠΈΠ½ΠΈΡ: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ Π² Π΅Π³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. 2β£Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π°: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΠ΅Π» Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΈΡΠ»ΠΎ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°: ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function sortByBits($arr) {
usort($arr, function($a, $b) {
$countA = substr_count(decbin($a), '1');
$countB = substr_count(decbin($b), '1');
return $countA === $countB ? $a - $b : $countA - $countB;
});
return $arr;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 971. Flip Binary Tree To Match Preorder Traversal
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ΠΎ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Ρ n ΡΠ·Π»Π°ΠΌΠΈ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ·Π»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ 1 Π΄ΠΎ n. Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· n Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ voyage, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΌ ΠΎΠ±Ρ
ΠΎΠ΄ΠΎΠΌ Π΄Π΅ΡΠ΅Π²Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ pre-order.
ΠΡΠ±ΠΎΠΉ ΡΠ·Π΅Π» Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ Π΄Π΅ΡΠ΅Π²Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ, ΠΏΠΎΠΌΠ΅Π½ΡΠ² ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π²ΠΎΡΠΎΡ ΡΠ·Π»Π° 1 Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΡΠ΅ΠΊΡ:
ΠΠ΅ΡΠ΅Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ±Ρ
ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ pre-order ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π» voyage.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅Ρ
ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΡ
ΡΠ·Π»ΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ²Π΅Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΡΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΡΠ·Π»Ρ Π² Π΄Π΅ΡΠ΅Π²Π΅, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±Ρ
ΠΎΠ΄ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ pre-order ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ voyage, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ [-1].
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [1,2], voyage = [2,1] Output: [-1] Explanation: It is impossible to flip the nodes such that the pre-order traversal matches voyage.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΡΠ·Π»Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² voyage, Π²Π΅ΡΠ½ΠΈΡΠ΅ [-1]. 2β£ΠΠ½Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ: Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² voyage (voyage[i]) ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ°. 3β£ΠΠ΅ΡΠ΅Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ·Π΅Π», Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΡ ΡΠ·Π»ΠΎΠ² ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π°, ΠΏΠΎΠΊΠ° Π²Π΅ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π° pre-order Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ voyage. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public $flipped;
public $index;
public $voyage;
function flipMatchVoyage($root, $voyage) {
$this->flipped = [];
$this->index = 0;
$this->voyage = $voyage;
$this->dfs($root);
if (!empty($this->flipped) && $this->flipped[0] == -1) {
return [-1];
}
return $this->flipped;
}
function dfs($node) {
if ($node !== null) {
if ($node->val != $this->voyage[$this->index++]) {
$this->flipped = [-1];
return;
}
if ($this->index < count($this->voyage) && $node->left !== null && $node->left->val != $this->voyage[$this->index]) {
$this->flipped[] = $node->val;
$this->dfs($node->right);
$this->dfs($node->left);
} else {
$this->dfs($node->left);
$this->dfs($node->right);
}
}
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 121. Best Time to Buy and Sell Stock
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π½, Π³Π΄Π΅ prices[i] ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π½ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠΈ Π² i-ΠΉ Π΄Π΅Π½Ρ.
ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΡ ΠΏΡΠΈΠ±ΡΠ»Ρ, Π²ΡΠ±ΡΠ°Π² ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΊΡΠΏΠΊΠΈ Π°ΠΊΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π΄Π΅Π½Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π΄Π»Ρ Π΅Π΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ±ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ±ΡΠ»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π΅ΡΠ½ΠΈΡΠ΅ 0.
ΠΡΠΈΠΌΠ΅Ρ:
Input: prices = [7,1,5,3,6,4] Output: 5 Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ minPrice Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ PHP_INT_MAX, maxProfit β 0. 2β£ΠΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅Π½Π°ΠΌ: ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΠ΅Π½Π° ΠΌΠ΅Π½ΡΡΠ΅ minPrice, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ minPrice. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΡΠΈΠ±ΡΠ»Ρ (price - minPrice) Π±ΠΎΠ»ΡΡΠ΅ maxProfit, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ maxProfit. 3β£ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ maxProfit. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public function maxProfit($prices) {
$minPrice = PHP_INT_MAX;
$maxProfit = 0;
foreach ($prices as $price) {
if ($price < $minPrice) {
$minPrice = $price;
} elseif ($price - $minPrice > $maxProfit) {
$maxProfit = $price - $minPrice;
}
}
return $maxProfit;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 360. Sort Transformed Array
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nums ΠΈ ΡΡΠΈ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ»Π° a, b ΠΈ c. ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈΠ΄Π° f(x) = ax^2 + bx + c ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ nums[i] Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [-4,-2,2,4], a = 1, b = 3, c = 5
Output: [3,9,15,33]
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° nums ΠΏΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ f(x) = ax^2 + bx + c ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² transformed. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° transformed.
2β£ΠΠΎΡΠ°Π·ΡΡΠ΄Π½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
ΠΠ°Ρ
ΠΎΠ΄ΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΡ. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ transformed.
3β£Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΈΡΡΠ΅
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΡ (ΡΠ°Π·ΡΡΠ΄Π°) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function sortTransformedArray($nums, $a, $b, $c) {
$transformed = array_map(function($x) use ($a, $b, $c) {
return $a * $x * $x + $b * $x + $c;
}, $nums);
$this->radixSort($transformed);
return $transformed;
}
private function radixSort(&$array) {
$maxElement = max(array_map('abs', $array));
$placeValue = 1;
while ($maxElement / $placeValue > 0) {
$this->countingSortByDigit($array, $placeValue);
$placeValue *= 10;
}
$negatives = array_filter($array, function($x) { return $x < 0; });
$positives = array_filter($array, function($x) { return $x >= 0; });
sort($negatives);
sort($positives);
$array = array_merge($negatives, $positives);
}
private function countingSortByDigit(&$array, $placeValue) {
$n = count($array);
$output = array_fill(0, $n, 0);
$count = array_fill(0, 10, 0);
foreach ($array as $num) {
$digit = (int)(abs($num) / $placeValue) % 10;
$count[$digit]++;
}
for ($i = 1; $i < 10; $i++) {
$count[$i] += $count[$i - 1];
}
for ($i = $n - 1; $i >= 0; $i--) {
$num = $array[$i];
$digit = (int)(abs($num) / $placeValue) % 10;
$output[$count[$digit] - 1] = $num;
$count[$digit]--;
}
for ($i = 0; $i < $n; $i++) {
$array[$i] = $output[$i];
}
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 1319. Number of Operations to Make Network Connected
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ΠΎ n ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΎΡ 0 Π΄ΠΎ n - 1, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΡ
Ethernet-ΠΊΠ°Π±Π΅Π»ΡΠΌΠΈ connections, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΡΡ, Π³Π΄Π΅ connections[i] = [ai, bi] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ ai ΠΈ bi. ΠΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡ.
ΠΠ°ΠΌ Π΄Π°Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅ΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΊΠ°Π±Π΅Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΈΡ
ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠΈ Π½Π΅ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΡ
ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ
Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΌΠΈ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π΅ΡΠ½ΠΈΡΠ΅ -1.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 4, connections = [[0,1],[0,2],[1,2]]
Output: 1
Explanation: Remove cable between computer 1 and 2 and place between computers 1 and 3.
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ connections. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΌΠ΅Π½ΡΡΠ΅ n - 1, Ρ Π½Π°Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π±Π΅Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΡ Π³ΡΠ°Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ -1.
2β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ connections, Π³Π΄Π΅ adj[x] ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅Ρ
ΡΠΎΡΠ΅Π΄Π΅ΠΉ ΡΠ·Π»Π° x. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ numberOfConnectedComponents, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ²ΡΠ·Π½ΠΎΡΡΠΈ Π² Π³ΡΠ°ΡΠ΅. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 0.
3β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² visit Π΄Π»ΠΈΠ½ΠΎΠΉ n Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΡ
ΡΠ·Π»ΠΎΠ². ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ·Π»Π°ΠΌ, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° i ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π±ΡΠ» Π»ΠΈ ΠΎΠ½ ΠΏΠΎΡΠ΅ΡΠ΅Π½. ΠΡΠ»ΠΈ ΡΠ·Π΅Π» i Π½Π΅ Π±ΡΠ» ΠΏΠΎΡΠ΅ΡΠ΅Π½, ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ numberOfConnectedComponents Π½Π° 1 ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄ DFS:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ dfs Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±Ρ
ΠΎΠ΄Π°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ·Π΅Π», ΡΠ΅Π±ΡΠ° ΠΈ visit Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ·Π»Π° i.
ΠΡΠΌΠ΅ΡΡΡΠ΅ ΡΠ·Π΅Π» ΠΊΠ°ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΠΉ.
ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠΎΡΠ΅Π΄ΡΠΌ ΡΠ·Π»Π°. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΎΡΠ΅Π΄ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΠΏΠΎΡΠ΅ΡΠ΅Π½, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ dfs Ρ ΡΡΠΈΠΌ ΡΠΎΡΠ΅Π΄ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·Π»Π°.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ numberOfConnectedComponents - 1.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
private function dfs($node, $adj, &$visit) {
$visit[$node] = true;
if (!isset($adj[$node])) {
return;
}
foreach ($adj[$node] as $neighbor) {
if (!$visit[$neighbor]) {
$visit[$neighbor] = true;
$this->dfs($neighbor, $adj, $visit);
}
}
}
function makeConnected($n, $connections) {
if (count($connections) < $n - 1) {
return -1;
}
$adj = [];
foreach ($connections as $connection) {
$adj[$connection[0]][] = $connection[1];
$adj[$connection[1]][] = $connection[0];
}
$numberOfConnectedComponents = 0;
$visit = array_fill(0, $n, false);
for ($i = 0; $i < $n; $i++) {
if (!$visit[$i]) {
$numberOfConnectedComponents++;
$this->dfs($i, $adj, $visit);
}
}
return $numberOfConnectedComponents - 1;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
Repost from Backend
ΠΡΠΈΠ²Π΅Ρ ΡΠ΅Π±ΡΡ!
ΠΠ½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΈΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΡ
Π±ΠΈΠ·Π½Π΅Ρ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ.
Π― ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Ρ 10 Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠΏΡΡΠ° Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ°ΡΡΠ°ΠΏΠΎΠ², ΠΊΠ°ΠΊ ΡΡΠΏΠ΅ΡΠΈΡ
ΡΠ°ΠΊ ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ±ΡΡΠΎΡΠ½ΡΡ
ΠΌΠΎΠ³Ρ Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΠΎΡΠ΅Π½ΠΊΡ. Π― ΠΏΡΠΎΠ΄Π°Π²Π°Π» ΡΠ²ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π² ΠΏΡΠΈΠ±ΡΠ»Ρ, ΠΈ Ρ ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠ±ΡΡΠΎΠΊ ΠΏΡΠΎΠ΄ΠΎΠ²Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠΎΡΠΎΠ² Ρ Π²Π°ΠΌΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ Π²Π°ΡΠΈ ΠΈΠ΄Π΅ΠΈ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΏΠΎΠΊΠ° Ρ ΠΏΡΡΠ½ ΠΈ Π½Π° Π²Π΅ΡΠ΅Π»Π΅. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ @kivaiko ΠΈ ΠΌΡ ΡΠΎΠ·Π²ΠΎΠ½ΠΈΠΌΡΡ, ΡΡΠΎΠ±Ρ Ρ ΡΡΠ΅Π·Π²ΠΎ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π» Π²Π°ΡΠΈ ΡΠ°Π½ΡΡ ΠΈ Π΄Π°Π» ΡΠΊΡΠΏΠ΅ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ.
1 355
ΠΠ°Π΄Π°ΡΠ°: 525. Contiguous Array
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΡΠ°Π²Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ 0 ΠΈ 1.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [0,1] Output: 2 Explanation: [0, 1] is the longest contiguous subarray with an equal number of 0 and 1.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ count Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ 1 ΠΈ 0, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ max_length Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π°. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ map Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ Π²ΡΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ count. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (0, -1) Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ. 2β£ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ nums. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ count (ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ Π½Π° 1 Π΄Π»Ρ 1 ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΠΉΡΠ΅ Π½Π° 1 Π΄Π»Ρ 0). ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ count ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΈΠ· Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ max_length, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ² Π΄Π»ΠΈΠ½Π½Π΅Π΅. 3β£ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ count Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ max_length. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function findMaxLength($nums) {
$countMap = [0 => -1];
$maxLength = 0;
$count = 0;
for ($i = 0; $i < count($nums); $i++) {
$count += ($nums[$i] == 1 ? 1 : -1);
if (array_key_exists($count, $countMap)) {
$maxLength = max($maxLength, $i - $countMap[$count]);
} else {
$countMap[$count] = $i;
}
}
return $maxLength;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 868. Binary Gap
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n, Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΠΌΠΈ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° n. ΠΡΠ»ΠΈ Π½Π΅Ρ Π΄Π²ΡΡ
ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
Π΅Π΄ΠΈΠ½ΠΈΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ 0.
ΠΠ²Π΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΈΡ
ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠ»ΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π½ΡΠ»Π΅ΠΉ Π½Π΅Ρ). Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΠΌΠΈ β ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡ
ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌΠΈ Π² Π±ΠΈΡΠΎΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π²Π΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ Π² "1001" ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ 3.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 22
Output: 2
Explanation: 22 in binary is "10110".
The first adjacent pair of 1's is "10110" with a distance of 2.
The second adjacent pair of 1's is "10110" with a distance of 1.
The answer is the largest of these two distances, which is 2.
Note that "10110" is not a valid pair since there is a 1 separating the two 1's underlined.
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ A ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² i, ΡΠ°ΠΊΠΈΡ
ΡΡΠΎ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° n i-ΠΉ Π±ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 1.
2β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ A, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ.
3β£ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
function binaryGap($N) {
$A = [];
for ($i = 0; $i < 32; $i++)
if (($N >> $i) & 1) $A[] = $i;
$ans = 0;
for ($i = 0; $i < count($A) - 1; $i++)
$ans = max($ans, $A[$i + 1] - $A[$i]);
return $ans;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ1 355
ΠΠ°Π΄Π°ΡΠ°: 1038. Binary Search Tree to Greater Sum Tree
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠΎΠ»ΡΡΠΈΠ² ΠΊΠΎΡΠ΅Π½Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΏΠΎΠΈΡΠΊΠ° (BST), ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² Π±ΠΎΠ»ΡΡΠ΅Π΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ BST Π±ΡΠ» Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΠ»ΡΡ ΡΡΠΌΠΌΠ° Π²ΡΠ΅Ρ
ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΡ
ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»ΡΡ Π² BST. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎΠΈΡΠΊΠ° - ΡΡΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠ΅Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌ: Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ·Π»Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·Π»Ρ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠ»ΡΡ ΡΠ·Π»Π°. ΠΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ·Π»Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·Π»Ρ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠ»ΡΡ ΡΠ·Π»Π°. Π Π»Π΅Π²ΠΎΠ΅, ΠΈ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ Π΄Π΅ΡΠ΅Π²ΡΡΠΌΠΈ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8] Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΠ±Ρ ΠΎΠ΄ in-order: ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ "ΠΏΡΠ°Π²ΡΠΉ, ΠΊΠΎΡΠ΅Π½Ρ, Π»Π΅Π²ΡΠΉ" (ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ in-order ΠΎΠ±Ρ ΠΎΠ΄). ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. 2β£ΠΠ°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ: ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ·Π»Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π° ΠΊ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π° ΡΡΠΎΠΉ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ. 3β£ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ²: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π² Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ ΡΡΠΌΠΌΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class TreeNode {
public $val = null;
public $left = null;
public $right = null;
function __construct($val = 0, $left = null, $right = null) {
$this->val = $val;
$this->left = $left;
$this->right = $right;
}
}
class Solution {
private $sum = 0;
function bstToGst($root) {
$this->reverseInorder($root);
return $root;
}
function reverseInorder($node) {
if ($node === null) return;
$this->reverseInorder($node->right);
$this->sum += $node->val;
$node->val = $this->sum;
$this->reverseInorder($node->left);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ