C/C++ | LeetCode
Open in Telegram
Π‘Π°ΠΉΡ: https://easyoffer.ru/ ΠΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ: t.me/+xGeAw6ckJ4liYzQy ΠΠΎΠ½ΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @easyoffer_adv
Show more3 236
Subscribers
+424 hours
+127 days
+230 days
Posts Archive
3 236
ΠΠ°Π΄Π°ΡΠ°: 1329. Sort the Matrix Diagonally
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ ΠΌΠ°ΡΡΠΈΡΡ β ΡΡΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ ΡΡΠ΅Π΅ΠΊ, Π½Π°ΡΠΈΠ½Π°ΡΡΠ°ΡΡΡ Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΡΠ΅ΠΉΠΊΠΈ Π² ΡΠ°ΠΌΠΎΠΉ Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π² ΡΠ°ΠΌΠΎΠΌ Π»Π΅Π²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΠΈ ΠΈΠ΄ΡΡΠ°Ρ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²Π½ΠΈΠ·-Π²ΠΏΡΠ°Π²ΠΎ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ ΠΌΠ°ΡΡΠΈΡΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠ°ΡΡΡ Ρ mat[2][0], Π³Π΄Π΅ mat β ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 6 x 3, Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΅ΠΉΠΊΠΈ mat[2][0], mat[3][1] ΠΈ mat[4][2].
ΠΠ°Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° mat ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x n, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π». ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: mat = [[3,3,1,1],[2,2,1,2],[1,1,1,2]]
Output: [[1,1,1,1],[1,2,2,2],[1,2,3,3]]
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΡΡ m ΠΈ n. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ
Π΅Ρ-ΠΊΠ°ΡΡΡ ΠΈΠ· ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΊΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Π΅ΠΉ.
2β£ΠΡΡΠ°Π²ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Ρ
Π΅Ρ-ΠΊΠ°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΠ° ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ.
3β£ΠΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Ρ
Π΅Ρ-ΠΊΠ°ΡΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ, Π·Π°ΠΏΠΎΠ»Π½ΡΡ Π΅Π΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Π΅ΠΉ. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
size_t m = mat.size();
size_t n = mat[0].size();
map<int, priority_queue<int, vector<int>, greater<int>>> diagonals;
for (size_t row = 0; row < m; row++) {
for (size_t col = 0; col < n; col++) {
diagonals[row - col].push(mat[row][col]);
}
}
for (size_t row = 0; row < m; row++) {
for (size_t col = 0; col < n; col++) {
mat[row][col] = diagonals[row - col].top();
diagonals[row - col].pop();
}
}
return mat;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 935. Knight Dialer
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π¨Π°Ρ
ΠΌΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ½Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π΄Π²Π΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈ ΠΎΠ΄Π½Ρ ΠΊΠ»Π΅ΡΠΊΡ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, ΠΈΠ»ΠΈ Π½Π° Π΄Π²Π΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈ ΠΎΠ΄Π½Ρ ΠΊΠ»Π΅ΡΠΊΡ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ (ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±Π΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΡΠΎΡΠΌΡ Π±ΡΠΊΠ²Ρ L). ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°Ρ
ΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½Π° ΡΡΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅: Π¨Π°Ρ
ΠΌΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ°Ρ
ΠΌΠ°ΡΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ Π½ΠΈΠΆΠ΅: Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Ρ
ΠΌΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ½Ρ ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½Π°Ρ ΠΏΠ°Π½Π΅Π»Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΊΠΎΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠ΅ (ΡΠΎ Π΅ΡΡΡ Π½Π° ΡΠΈΠ½Π΅ΠΉ ΠΊΠ»Π΅ΡΠΊΠ΅).
Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n, Π²Π΅ΡΠ½ΠΈΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΡ
Π½ΠΎΠΌΠ΅ΡΠΎΠ² Π΄Π»ΠΈΠ½Ρ n ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±ΡΠ°ΡΡ. ΠΠ°ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½Ρ Π½Π° Π»ΡΠ±ΡΡ ΡΠΈΡΡΠΎΠ²ΡΡ ΠΊΠ»Π΅ΡΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ n - 1 ΠΏΡΡΠΆΠΊΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π°Π±ΡΠ°ΡΡ Π½ΠΎΠΌΠ΅Ρ Π΄Π»ΠΈΠ½Ρ n. ΠΡΠ΅ ΠΏΡΡΠΆΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΏΡΡΠΆΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ½Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 10^9 + 7.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 1 Output: 10π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅. 2β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² DP ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°Π±ΠΎΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π΄Π»ΠΈΠ½Ρ 1 Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠΈ (ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ 1). ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² DP, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡΠΌ ΠΊΠΎΠ½Ρ. 3β£ΠΠ΅ΡΠ½ΡΡΡ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ DP Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ°Π³Π΅. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int knightDialer(int n) {
int MOD = 1000000007;
vector<vector<int>> moves = {
{4, 6},
{6, 8},
{7, 9},
{4, 8},
{0, 3, 9},
{},
{0, 1, 7},
{2, 6},
{1, 3},
{2, 4}
};
vector<int> dp(10, 1);
for (int step = 1; step < n; step++) {
vector<int> newDp(10, 0);
for (int i = 0; i < 10; i++) {
for (int move : moves[i]) {
newDp[move] = (newDp[move] + dp[i]) % MOD;
}
}
dp = newDp;
}
return accumulate(dp.begin(), dp.end(), 0, [&](int sum, int count) {
return (sum + count) % MOD;
});
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 508. Most Frequent Subtree Sum
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ΠΎ ΠΊΠΎΡΠ΅Π½Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°, Π²Π΅ΡΠ½ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡΡΡ ΡΡΠΌΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π°. ΠΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π²Π΅ΡΠ½ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π‘ΡΠΌΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° ΡΠ·Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠΌΠΌΠ° Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·Π»ΠΎΠ², ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎΠΌ, ΡΠΊΠΎΡΠ΅Π½Π΅Π½Π½ΡΠΌ Π² ΡΡΠΎΠΌ ΡΠ·Π»Π΅ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌ ΡΠ·Π΅Π»).
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [5,2,-3] Output: [2,-3,4]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ sumFreq Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΎΡΡ Π²ΡΠ΅Ρ ΡΡΠΌΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π². ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ maxFreq Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² maxFreqSums Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠΌΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², ΡΠ°ΡΡΠΎΡΠ° ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ. 2β£ΠΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌ ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ post-order. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΌΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ·Π»ΠΎΠ² Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π°. Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ ΡΠ°ΡΡΠΎΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠΌΠΌΡ Π² sumFreq. ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ maxFreq, Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΠΎΡΠ° ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠΌΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ maxFreq. 3β£Π‘Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ sumFreq ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π²ΡΠ΅ ΡΡΠΌΠΌΡ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ, ΡΠ°Π²Π½ΠΎΠΉ maxFreq, Π² ΠΌΠ°ΡΡΠΈΠ² maxFreqSums. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² maxFreqSums. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
#include <vector>
#include <unordered_map>
#include <algorithm>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
vector<int> findFrequentTreeSum(TreeNode* root) {
unordered_map<int, int> sumFreq;
int maxFreq = 0;
function<int(TreeNode*)> subtreeSum = [&](TreeNode* node) {
if (!node) return 0;
int leftSum = subtreeSum(node->left);
int rightSum = subtreeSum(node->right);
int currSum = node->val + leftSum + rightSum;
sumFreq[currSum]++;
maxFreq = max(maxFreq, sumFreq[currSum]);
return currSum;
};
subtreeSum(root);
vector<int> result;
for (const auto& [sum, freq] : sumFreq) {
if (freq == maxFreq) {
result.push_back(sum);
}
}
return result;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 727. Minimum Window Subsequence
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΡΠ»ΠΈ Π² ΡΡΡΠΎΠΊΠ°Ρ
s1 ΠΈ s2 Π½Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΊΡΡΠ²Π°Π»ΠΎ Π±Ρ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² s2, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ "". ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΡ
ΠΎΠΊΠΎΠ½ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Ρ ΡΠ°ΠΌΡΠΌ Π»Π΅Π²ΡΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s1 = "abcdebdde", s2 = "bde" Output: "bcde"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°. 2β£ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· s2. 3β£ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ, ΠΈ Π»Π΅Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
string minWindow(string s1, string s2) {
if (s1.empty() || s2.empty()) {
return "";
}
unordered_map<char, int> dictT;
for (char c : s2) {
dictT[c]++;
}
int required = dictT.size();
int l = 0, r = 0, formed = 0;
unordered_map<char, int> windowCounts;
int ans[3] = {INT_MAX, 0, 0};
while (r < s1.size()) {
char c = s1[r];
windowCounts[c]++;
if (dictT.count(c) && windowCounts[c] == dictT[c]) {
formed++;
}
while (l <= r && formed == required) {
c = s1[l];
if (r - l + 1 < ans[0]) {
ans[0] = r - l + 1;
ans[1] = l;
ans[2] = r;
}
windowCounts[c]--;
if (dictT.count(c) && windowCounts[c] < dictT[c]) {
formed--;
}
l++;
}
r++;
}
return ans[0] == INT_MAX ? "" : s1.substr(ans[1], ans[0]);
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 1125. Smallest Sufficient Team
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π½Π°Π²ΡΠΊΠΎΠ² req_skills ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π»ΡΠ΄Π΅ΠΉ. i-ΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ people[i] ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π°Π²ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠΎΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: Π½Π°Π±ΠΎΡ Π»ΡΠ΄Π΅ΠΉ, ΡΠ°ΠΊΠΎΠΉ ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π°Π²ΡΠΊΠ° ΠΈΠ· req_skills, Π΅ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠΈΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π° = [0, 1, 3] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π»ΡΠ΄Π΅ΠΉ Ρ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ people[0], people[1] ΠΈ people[3].
ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π»ΡΠ±ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠ²Π΅Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠ²Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: req_skills = ["algorithms","math","java","reactjs","csharp","aws"], people = [["algorithms","math","java"],["algorithms","math","reactjs"], ["java","csharp","aws"],["reactjs","csharp"],["csharp","math"],["aws","java"]] Output: [1,2]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠΎΠΊ Π½Π°Π²ΡΠΊΠΎΠ²: ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ n ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π½Π°Π²ΡΠΊΠΎΠ² m. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ skillId, ΡΡΠΎΠ±Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½Π°Π²ΡΠΊΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² skillsMaskOfPerson, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ Π½Π°Π²ΡΠΊΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. 2β£ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (DP): Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² dp ΡΠ°Π·ΠΌΠ΅ΡΠ° 2^m ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ (1 << n) - 1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ dp[0] Π² 0 (Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ skillsMask ΠΎΡ 1 Π΄ΠΎ 2^m - 1: - Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° i: - Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ smallerSkillsMask ΠΊΠ°ΠΊ skillsMask & ~skillsMaskOfPerson[i]. - Π΅ΡΠ»ΠΈ smallerSkillsMask ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ skillsMask, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ dp[skillsMask], Π΅ΡΠ»ΠΈ Π½ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π»ΡΡΡΠ΅ (ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π±ΠΈΡΠΎΠ²). 3β£Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ°: ΠΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ ΠΈΠ· dp ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π»ΡΠ΄Π΅ΠΉ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
vector<int> smallestSufficientTeam(vector<string>& req_skills, vector<vector<string>>& people) {
int n = people.size(), m = req_skills.size();
unordered_map<string, int> skillId;
for (int i = 0; i < m; i++) {
skillId[req_skills[i]] = i;
}
vector<int> skillsMaskOfPerson(n, 0);
for (int i = 0; i < n; i++) {
for (const string& skill : people[i]) {
skillsMaskOfPerson[i] |= 1 << skillId[skill];
}
}
vector<long> dp(1 << m, (1L << n) - 1);
dp[0] = 0;
for (int skillsMask = 1; skillsMask < (1 << m); skillsMask++) {
for (int i = 0; i < n; i++) {
int smallerSkillsMask = skillsMask & ~skillsMaskOfPerson[i];
if (smallerSkillsMask != skillsMask) {
long peopleMask = dp[smallerSkillsMask] | (1L << i);
if (__builtin_popcountll(peopleMask) < __builtin_popcountll(dp[skillsMask])) {
dp[skillsMask] = peopleMask;
}
}
}
}
long answerMask = dp[(1 << m) - 1];
vector<int> ans;
for (int i = 0; i < n; i++) {
if ((answerMask >> i) & 1) {
ans.push_back(i);
}
}
return ans;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
"Π’Ρ ΡΠ΅, Π΄ΡΡΠ°ΠΊ?" β Π±Π°Π·ΠΎΠ²Π°Ρ ΡΠ΅Π°ΠΊΡΠΈΡ ΡΠ΅Π½ΡΠΎΡΠ° Π½Π° ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ IT ΠΊΡΡΡΡ
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠΊΠΎΠ»Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΠΊΡΠ±Π°ΡΠΎΡΠ½ΡΡ
Π°ΠΉΡΠΈΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠ½ΡΡ.
Π’ΡΡΡΠ½ΡΠ΅ ΡΠ΅Π±ΡΡΠ° ΡΡΠ°ΡΡΡ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ
ΠΊΠ°Π½Π°Π»Π°Ρ
Π΄Π»Ρ Π°ΠΉΡΠΈΡΠ½ΠΈΠΊΠΎΠ². ΠΠΎΡ ΡΠΎΠΏ-5 ΠΎΡ ΡΠΈΠΌΠ»ΠΈΠ΄Π° ΠΈΠ· Π‘Π±Π΅ΡΠ°:
βοΈ Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ΄ΠΆΠΈΡ β Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Ρ
ΠΎΡΠ΅Ρ Π±ΡΡΡ Π² ΠΊΡΡΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ Π² Π°ΠΉΡΠΈ
π§ Ai-ΡΠ½ΠΈΡΠ° β ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΠΈ Π² Π·Π°ΡΠ°Π±ΠΎΡΠΎΠΊ $$$
π» ΠΠ ΡΠ΅Π±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡ! β ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΠΈ Π°ΠΉΡΠΈ ΡΡΠ½ΠΊΠ° Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡΠΌΠΈ
4οΈβ£ ΠΠΎΠΉΡΠΈ Π² IT β ΡΠΎΠ½Π½Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ³Π΅ΡΠΎΠ²
π IT ΠΈΠ½Π΄ΡΡ β ΡΠ±ΠΎΡΠ½ΠΈΠΊ Π°ΠΉΡΠΈ ΠΌΠ΅ΠΌΠΎΠ²
3 236
ΠΠ°Π΄Π°ΡΠ°: 726. Number of Atoms
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΡΡΡΠΎΠΊΠΎΠ²Π°Ρ ΡΠΎΡΠΌΡΠ»Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Ρ
ΠΈΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΎΡΠΌΡΠ»Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠΎΠΌΠΎΠ². ΠΡΠΎΠΌΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π·Π°ΡΠ΅ΠΌ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΡΠ½ΡΡ
Π±ΡΠΊΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ
Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΎΠ»ΡΡΠ΅ 1, Π·Π° Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "H2O" ΠΈ "H2O2" Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ, Π° "H1O2" Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. ΠΠ²Π΅ ΡΠΎΡΠΌΡΠ»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΡΡΠ³ΡΡ ΡΠΎΡΠΌΡΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "H2O2He3Mg4" ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΡΠ»ΠΎΠΉ.
Π€ΠΎΡΠΌΡΠ»Π°, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½Π°Ρ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΈ ΡΡΠ΅Ρ (ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ) ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "(H2O2)" ΠΈ "(H2O2)3" ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅: ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ (Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅), Π·Π°ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΎΠ»ΡΡΠ΅ 1), Π·Π°ΡΠ΅ΠΌ Π²ΡΠΎΡΠΎΠ΅ ΠΈΠΌΡ (Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅), Π·Π°ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΎΠ»ΡΡΠ΅ 1) ΠΈ Ρ. Π΄. Π’Π΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π»ΠΈΡΡ Π² 32-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: formula = "H2O" Output: "H2O"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ΅ΠΊ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠΊΠΎΠ±ΠΎΠΊ. 2β£ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΠΌΡΠ»Ρ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» - ΡΡΠΎ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΊΠΎΠ±ΠΊΠ° '(', ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π°ΡΠΎΠΌΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» - ΡΡΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΊΠΎΠ±ΠΊΠ° ')', ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΠΈ ΡΠΌΠ½ΠΎΠΆΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π°ΡΠΎΠΌΠΎΠ² Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ. ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» - ΡΡΠΎ Π°ΡΠΎΠΌ (Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ), ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΈΠΌΡ Π°ΡΠΎΠΌΠ° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ. 3β£ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
string countOfAtoms(string formula) {
stack<map<string, int>> stack;
stack.push(map<string, int>());
int n = formula.size();
int i = 0;
while (i < n) {
if (formula[i] == '(') {
stack.push(map<string, int>());
i++;
} else if (formula[i] == ')') {
map<string, int> top = stack.top();
stack.pop();
i++;
int start = i;
while (i < n && isdigit(formula[i])) {
i++;
}
int multiplicity = i > start ? stoi(formula.substr(start, i - start)) : 1;
for (const auto& [name, count] : top) {
stack.top()[name] += count * multiplicity;
}
} else {
int start = i;
i++;
while (i < n && islower(formula[i])) {
i++;
}
string name = formula.substr(start, i - start);
start = i;
while (i < n && isdigit(formula[i])) {
i++;
}
int multiplicity = i > start ? stoi(formula.substr(start, i - start)) : 1;
stack.top()[name] += multiplicity;
}
}
map<string, int> countMap = stack.top();
string result;
for (const auto& [name, count] : countMap) {
result += name;
if (count > 1) {
result += to_string(count);
}
}
return result;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠΉΡΠΈΡΠ½ΠΈΠΊΠΈ, ΡΡΠΎ Π²Π°ΠΌ β Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π΅ΡΡΡ ΠΊΠΎΠΌΡΡΠ½ΠΈΡΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² IT
Π’Π°ΠΌ Π΅ΡΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π²ΡΡ: ΡΠ°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ½Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°(ΠΊΠ½ΠΈΠ³ΠΈ, ΠΊΡΡΡΡ, ΡΠ΅ΡΡΡΡΡ ΠΈ Π³Π°ΠΉΠ΄Ρ), ΡΠ²Π΅ΠΆΠΈΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ ΠΌΠ΅ΠΌΡ
ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ²ΠΎΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅:
π© Frontend π Python
π§ Linux π©βπ» Π‘/Π‘++
π©βπ» C# π€ Π₯Π°ΠΊΠΈΠ½Π³ & ΠΠ
π± GitHub π₯ SQL
π©βπ» Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½ π€ DevOps
βοΈ Backend π₯ Data Science
π§βπ» Java π Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
π₯ PM / PdM π©βπ» GameDev
π§βπ» Golang π€΅ββοΈ IT-ΠΠΈΡΠ°ΠΏΡ
π§βπ» PHP π» WebDev
π₯ ΠΠΎΠ±. Dev π₯ΠΠ½Π°Π»ΠΈ.(SA&BA)
π©βπ» ΠΠΈΠ·Π°ΠΉΠ½ π₯ ΠΠ΅ΠΉΡΠΎΡΠ΅ΡΠΈ
π 1C π€ ΠΠ½ΠΈΠ³ΠΈ IT
β‘οΈ Π‘ΠΎΡ
ΡΠ°Π½ΡΠΉΡΠ΅ Π² Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ
3 236
ΠΠ°Π΄Π°ΡΠ°: 116. Populating Next Right Pointers in Each Node
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ. ΠΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ next-ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΡΠΊΠ°Π·ΡΠ²Π°Π» Π½Π° ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΡΠ΅Π΄Π° ΡΠΏΡΠ°Π²Π°. ΠΡΠ»ΠΈ ΡΠΎΡΠ΅Π΄Π° Π½Π΅Ρ β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ nullptr.
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [1,2,3,4,5,6,7] Output: [1,#,2,3,#,4,5,6,7,#] Π‘ΠΈΠΌΠ²ΠΎΠ» # ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ½Π΅Ρ ΡΡΠΎΠ²Π½Ρ.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Ρ (queue<Node*>) Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π΄Π΅ΡΠ΅Π²Π° Π² ΡΠΈΡΠΈΠ½Ρ (BFS). ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΠΊΠΎΡΠ½Ρ. 2β£ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ while, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ size β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ»Ρ Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ: ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΡΠ·Π΅Π» ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ·Π΅Π» ΡΡΠΎΠ²Π½Ρ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ node->next = Q.front(). ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ². 3β£ΠΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ, ΠΏΠΎΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΠΏΡΡΡΠ°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
Node* connect(Node* root) {
if (root == nullptr) {
return root;
}
queue<Node*> Q;
Q.push(root);
while (!Q.empty()) {
int size = Q.size();
for (int i = 0; i < size; i++) {
Node* node = Q.front();
Q.pop();
if (i < size - 1) {
node->next = Q.front();
}
if (node->left != nullptr) {
Q.push(node->left);
}
if (node->right != nullptr) {
Q.push(node->right);
}
}
}
return root;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 754. Reach a Number
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΡ ΡΡΠΎΠΈΡΠ΅ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ 0 Π½Π° Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ. Π ΠΏΠΎΠ·ΠΈΡΠΈΠΈ target Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ½ΠΊΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ
ΠΎΠ΄ΠΎΠ² numMoves ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ: Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ
ΠΎΠ΄Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠΉΡΠΈ Π»ΠΈΠ±ΠΎ Π½Π°Π»Π΅Π²ΠΎ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΎ. ΠΠΎ Π²ΡΠ΅ΠΌΡ i-Π³ΠΎ Ρ
ΠΎΠ΄Π° (Π½Π°ΡΠΈΠ½Π°Ρ Ρ i == 1 Π΄ΠΎ i == numMoves) Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ i ΡΠ°Π³ΠΎΠ² Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ target, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ
ΠΎΠ΄ΠΎΠ² (Ρ.Π΅. ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ numMoves), Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: target = 2 Output: 3π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (position) ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ°Π³ΠΎΠ² (steps). 2β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΊΠ», ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊ position ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π³ΠΎΠ² ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ steps. 3β£ΠΡΠ»ΠΈ position Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ target ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ position ΠΈ target ΡΠ΅ΡΠ½Π°Ρ, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΠΊΠ» ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ steps. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int reachTarget(int target) {
target = abs(target);
int position = 0;
int steps = 0;
while (position < target || (position - target) % 2 != 0) {
steps++;
position += steps;
}
return steps;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 350. Intersection of Two Arrays II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½Ρ Π΄Π²Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²Π° nums1 ΠΈ nums2. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΠΈΡ
ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΠ±ΠΎΠΈΡ
ΠΌΠ°ΡΡΠΈΠ²Π°Ρ
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΠ°ΡΡΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² nums1. 2β£ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ nums2, ΠΈ Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ· ΡΠ°Π³Π° 1 ΠΈ Π΅Π³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, int> counts;
vector<int> result;
for (int num : nums1) {
counts[num]++;
}
for (int num : nums2) {
if (counts[num] > 0) {
result.push_back(num);
counts[num]--;
}
}
return result;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 1481. Least Number of Unique Integers after K Removals
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» arr ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΠ²Π½ΠΎ k ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ:
Input: arr = [5,5,4], k = 1
Output: 1
Explanation: Remove the single 4, only 5 is left.
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ
Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° arr.
ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Ρ
Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅.
2β£Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠΎΡ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ· Ρ
Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠΎΡ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΡΠ°ΡΡΠΎΡΡ, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠΈΡ k.
3β£ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠ΅Π²ΡΡΠΈΠ»ΠΎ k, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ 0.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int findLeastNumOfUniqueInts(vector<int>& arr, int k) {
unordered_map<int, int> freqMap;
for (int num : arr) {
freqMap[num]++;
}
vector<int> frequencies;
for (auto& p : freqMap) {
frequencies.push_back(p.second);
}
sort(frequencies.begin(), frequencies.end());
int elementsRemoved = 0;
for (int i = 0; i < frequencies.size(); ++i) {
elementsRemoved += frequencies[i];
if (elementsRemoved > k) {
return frequencies.size() - i;
}
}
return 0;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 968. Binary Tree Cameras
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°ΠΌ Π΄Π°Π½ ΠΊΠΎΡΠ΅Π½Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°. ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΌΠ΅ΡΡ Π½Π° ΡΠ·Π»Ρ Π΄Π΅ΡΠ΅Π²Π°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π° ΡΠ·Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, ΡΠΎΠ±ΠΎΠΉ ΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π΅ΡΡΠΌΠΈ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΠΌΠ΅Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π·Π° Π²ΡΠ΅ΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ Π΄Π΅ΡΠ΅Π²Π°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [0,0,null,0,null,0,null,null,0] Output: 2 Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (solve): ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ: - [State 0] Π‘ΡΡΠΎΠ³ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ: Π²ΡΠ΅ ΡΠ·Π»Ρ Π½ΠΈΠΆΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΏΠΎΠΊΡΡΡΡ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΌ ΡΠ·Π΅Π». - [State 1] ΠΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ: Π²ΡΠ΅ ΡΠ·Π»Ρ Π½ΠΈΠΆΠ΅ ΠΈ Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠΎΡ ΡΠ·Π΅Π» ΠΏΠΎΠΊΡΡΡΡ, Π½ΠΎ Π½Π° ΡΡΠΎΠΌ ΡΠ·Π»Π΅ Π½Π΅Ρ ΠΊΠ°ΠΌΠ΅ΡΡ. - [State 2] Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ ΠΊΠ°ΠΌΠ΅ΡΠ°: Π²ΡΠ΅ ΡΠ·Π»Ρ Π½ΠΈΠΆΠ΅ ΠΈ Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠΎΡ ΡΠ·Π΅Π» ΠΏΠΎΠΊΡΡΡΡ, ΠΈ Π½Π° ΡΡΠΎΠΌ ΡΠ·Π»Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΊΠ°ΠΌΠ΅ΡΠ°. Π Π°ΡΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄Π»Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π². 2β£Π Π°ΡΡΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ: Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΡΡΡΡ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ, Π΄Π΅ΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ·Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ 1. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΡΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ Π½Π° ΡΡΠΎΠΌ ΡΠ·Π»Π΅, Π΄Π΅ΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ·Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ 1 ΠΈΠ»ΠΈ 2, ΠΈ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ Π΄Π΅ΡΠ΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ 2. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ Π½Π° ΡΡΠΎΠΌ ΡΠ·Π»Π΅, Π΄Π΅ΡΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. 3β£ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΠΌΠ΅Ρ: ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ solve Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΠ·Π»Π΅ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ 1 ΠΈ 2. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int minCameraCover(TreeNode* root) {
int ans[3];
solve(root, ans);
return min(ans[1], ans[2]);
}
private:
void solve(TreeNode* node, int* res) {
if (!node) {
res[0] = res[1] = 0;
res[2] = 99999;
return;
}
int L[3], R[3];
solve(node->left, L);
solve(node->right, R);
res[0] = L[1] + R[1];
res[1] = min(L[2] + min(R[1], R[2]), R[2] + min(L[1], L[2]));
res[2] = 1 + min(L[0], min(L[1], L[2])) + min(R[0], min(R[1], R[2]));
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 985. Sum of Even Numbers After Queries
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums ΠΈ ΠΌΠ°ΡΡΠΈΠ² queries, Π³Π΄Π΅ queries[i] = [vali, indexi].
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° i, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ nums[indexi] = nums[indexi] + vali, Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΡΠ΅ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ nums.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² answer, Π³Π΄Π΅ answer[i] - ΡΡΠΎ ΠΎΡΠ²Π΅Ρ Π½Π° i-ΠΉ Π·Π°ΠΏΡΠΎΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1], queries = [[4,0]] Output: [0]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : ΠΠ°Π²Π΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ evenSum Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ ΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ nums. ΠΡΠΎΠΉΡΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ nums ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ evenSum, ΡΠ»ΠΎΠΆΠΈΠ² Π²ΡΠ΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Π² nums. 2β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²: Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² result Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° [val, index] ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° queries Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nums[index] ΡΠ΅ΡΠ½ΠΎΠ΅, Π²ΡΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΈΠ· evenSum. ΠΠ±Π½ΠΎΠ²ΠΈΡΡ nums[index] Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ val. ΠΡΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nums[index] ΡΠ΅ΡΠ½ΠΎΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΊ evenSum. ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ evenSum Π² ΠΌΠ°ΡΡΠΈΠ² result. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΠ΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² result, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΡΠ²Π΅ΡΡ Π½Π° Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
vector<int> sumEvenAfterQueries(vector<int>& nums, vector<vector<int>>& queries) {
int evenSum = 0;
for (int num : nums) {
if (num % 2 == 0) {
evenSum += num;
}
}
vector<int> result;
for (const auto& query : queries) {
int val = query[0], index = query[1];
if (nums[index] % 2 == 0) {
evenSum -= nums[index];
}
nums[index] += val;
if (nums[index] % 2 == 0) {
evenSum += nums[index];
}
result.push_back(evenSum);
}
return result;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 437. Path Sum III
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΊΠΎΡΠ΅Π½Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ targetSum, Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΡΠ΅ΠΉ, Π³Π΄Π΅ ΡΡΠΌΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Π΄ΠΎΠ»Ρ ΠΏΡΡΠΈ ΡΠ°Π²Π½Π° targetSum.
ΠΡΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΈΠ»ΠΈ Π½Π° Π»ΠΈΡΡΠ΅, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄ΡΠΈ Π²Π½ΠΈΠ· (Ρ.Π΅. ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ·Π»ΠΎΠ² ΠΊ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ).
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8 Output: 3 Explanation: The paths that sum to 8 are shown.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΡΡΠ΅ΠΉ Π² Π΄Π΅ΡΠ΅Π²Π΅ count = 0 ΠΈ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ h, Π³Π΄Π΅ ΠΊΠ»ΡΡ - ΡΡΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΡΠΌΠΌΠ°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ - ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠ°Π»Π°ΡΡ. ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ preorder: ΡΠ·Π΅Π» -> Π»Π΅Π²ΡΠΉ -> ΠΏΡΠ°Π²ΡΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ preorder(node: TreeNode, curr_sum: int) ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΠ·Π΅Π» Π΄Π΅ΡΠ΅Π²Π° ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΡΠ·Π»ΠΎΠΌ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ, Π²ΡΠ·ΠΎΠ²Π΅ΠΌ preorder(root, 0). 2β£Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ·Π»Π°: curr_sum += node.val. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΡΡ Π² Π΄Π΅ΡΠ΅Π²Π΅ Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠΎΡΠ½Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° ΡΠ°Π²Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠΌΠΌΠ΅ curr_sum == k, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° 1: count += 1. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΡΡ Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π³Π΄Π΅-ΡΠΎ Π½ΠΈΠΆΠ΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΡΠ΅ΡΡΠΈΠΊΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ curr_sum - target: count += h[curr_sum - target]. 3β£ΠΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΎΡΡΠ°: ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° - ΡΡΠΎ curr_sum, Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π°Π·Π°Π΄ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π±ΡΠ»Π° curr_sum - target. ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΡΡΠΌΠΌΠΈΡΡΡΡΡΡ Π΄ΠΎ curr_sum - (curr_sum - target) = target. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ: h[curr_sum] += 1. ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π»Π΅Π²ΠΎΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΡ: preorder(node.left, curr_sum), preorder(node.right, curr_sum). ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π° ΡΠ΄Π°Π»ΠΈΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΈΠ· Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΡ: h[curr_sum] -= 1. ΠΠΎΠ³Π΄Π° ΠΎΠ±Ρ ΠΎΠ΄ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ preorder Π·Π°Π²Π΅ΡΡΠ΅Π½, ΡΡΠ΅ΡΡΠΈΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½. ΠΠ΅ΡΠ½Π΅ΠΌ Π΅Π³ΠΎ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int pathSum(TreeNode* root, int sum) {
int count = 0;
int k = sum;
unordered_map<int, int> h;
preorder(root, 0, h, count, k);
return count;
}
void preorder(TreeNode* node, int curr_sum, unordered_map<int, int>& h, int& count, int k) {
if (!node) return;
curr_sum += node->val;
if (curr_sum == k) {
count++;
}
count += h[curr_sum - k];
h[curr_sum]++;
preorder(node->left, curr_sum, h, count, k);
preorder(node->right, curr_sum, h, count, k);
h[curr_sum]--;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
Repost from ΠΠ΄ΡΡΠΈΠΉ ΠΊ IT
π₯ ΠΠ°ΠΏΠΈΡΠ°Π» Π²ΠΈΠ΄ΠΎΡ "ΠΠ°ΠΊ Π·Π° 3 ΠΌΠΈΠ½ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΠ²ΡΠΎΠΎΡΠΊΠ»ΠΈΠΊΠΈ Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ HeadHunter" Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΡΠΎΠΉ ΡΠ½ΡΠ»ΠΎΠΉ ΡΡΡΠΈΠ½ΠΎΠΉ
πΊ ΠΠΈΠ΄Π΅ΠΎ: https://youtu.be/G_FOwEGPwlw
3 236
ΠΠ°Π΄Π°ΡΠ°: 1268. Search Suggestions System
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ products ΠΈ ΡΡΡΠΎΠΊΠ° searchWord. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ
Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° searchWord. ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ searchWord. ΠΡΠ»ΠΈ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ
ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Ρ ΠΎΠ±ΡΠΈΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠΈ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° searchWord.
ΠΡΠΈΠΌΠ΅Ρ:
Input: products = ["havana"], searchWord = "havana" Output: [["havana"],["havana"],["havana"],["havana"],["havana"],["havana"]]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ². 2β£ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² searchWord, Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ. 3β£Π‘ΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
vector<vector<string>> suggestedProducts(vector<string>& products, string searchWord) {
sort(products.begin(), products.end());
vector<vector<string>> result;
string prefix = "";
for (char c : searchWord) {
prefix += c;
vector<string> suggestions;
for (const string& product : products) {
if (product.find(prefix) == 0) {
suggestions.push_back(product);
if (suggestions.size() == 3) break;
}
}
result.push_back(suggestions);
}
return result;
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 786. K-th Smallest Prime Fraction
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» arr, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ 1 ΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π°, Π³Π΄Π΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° arr ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Ρ. Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π½ΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i ΠΈ j, Π³Π΄Π΅ 0 <= i < j < arr.length, ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π΄ΡΠΎΠ±Ρ arr[i] / arr[j].
ΠΠ΅ΡΠ½ΠΈΡΠ΅ k-ΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΡΡ Π΄ΡΠΎΠ±Ρ ΠΈΠ· ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ
. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΎΡΠ²Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· Π΄Π²ΡΡ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΡΠ°Π·ΠΌΠ΅ΡΠ° 2, Π³Π΄Π΅ answer[0] == arr[i] ΠΈ answer[1] == arr[j].
ΠΡΠΈΠΌΠ΅Ρ:
Input: arr = [1,2,3,5], k = 3 Output: [2,5] Explanation: The fractions to be considered in sorted order are: 1/5, 1/3, 2/5, 1/2, 3/5, and 2/3. The third fraction is 2/5.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ pq Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°Ρ Π΄ΡΠΎΠ±Π΅ΠΉ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ arr, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π° i. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° arr[i] Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π΄ΡΠΎΠ±Ρ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ (arr[arr.size() - 1]). ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΏΠ°ΡΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΡΠΎΠ±ΠΈ (-1.0 * arr[i] / arr[arr.size() - 1]) ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² (i Π΄Π»Ρ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ ΠΈ arr.size() - 1 Π΄Π»Ρ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ), Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ pq. ΠΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ pq ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π΄ΡΠΎΠ±ΠΈ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΡΠΎΠ±Π΅ΠΉ. 2β£ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ k - 1 ΡΠ°Π·: ΡΠ΄Π°Π»ΠΈΡΠ΅ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (Π½Π°ΠΈΠΌΠ΅Π½ΡΡΡΡ Π΄ΡΠΎΠ±Ρ) ΠΈΠ· ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ pq ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ cur. Π£ΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ (cur[1]--). ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ Π΄ΡΠΎΠ±Ρ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ Π² cur[0] Π½Π° ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΡΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ (arr[cur[1]]). ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΠΎΠ±ΠΈ (-1.0 * arr[cur[0]] / arr[cur[1]]) ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ (cur[0] Π΄Π»Ρ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ ΠΈ cur[1] Π΄Π»Ρ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ) Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ pq. ΠΠΎΡΠ»Π΅ k - 1 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ pq Π±ΡΠ΄Π΅Ρ k-ΠΉ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π΄ΡΠΎΠ±ΡΡ. 3β£ΠΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΠΈΠ· Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈΡ Π² result. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ (arr[result[0]]) ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ (arr[result[1]]), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ k-ΠΉ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π΄ΡΠΎΠ±ΠΈ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
#include <queue>
#include <vector>
class Solution {
public:
std::vector<int> kthSmallestPrimeFraction(std::vector<int>& arr, int k) {
auto comp = [&arr](std::pair<int, int>& a, std::pair<int, int>& b) {
return arr[a.first] * arr[b.second] > arr[a.second] * arr[b.first];
};
std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>, decltype(comp)> pq(comp);
for (int i = 0; i < arr.size() - 1; i++) {
pq.emplace(i, arr.size() - 1);
}
for (int i = 0; i < k - 1; i++) {
auto [numeratorIndex, denominatorIndex] = pq.top();
pq.pop();
if (denominatorIndex - 1 > numeratorIndex) {
pq.emplace(numeratorIndex, denominatorIndex - 1);
}
}
auto [numeratorIndex, denominatorIndex] = pq.top();
return {arr[numeratorIndex], arr[denominatorIndex]};
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 44. Wildcard Matching
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°Π½Π° Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° s ΠΈ ΡΠ°Π±Π»ΠΎΠ½ p, ΡΠ΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
? β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
* β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΡΡΡΡ)
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "aa", p = "a" Output: falseπ¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π£Π΄Π°Π»ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ Π·Π²ΡΠ·Π΄ΠΎΡΠ΅ΠΊ (** β *), Ρ.ΠΊ. ΠΎΠ½ΠΈ Π½Π΅ Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ 2β£Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ helper, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ 3β£ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ: ΠΡΠ»ΠΈ p[i] == s[i] ΠΈΠ»ΠΈ p[i] == '?' β ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ΅ ΠΡΠ»ΠΈ p[i] == '*' β Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ * ΠΈΠ»ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΡΡΡΠΎΠΊΠΈ ΠΠ½Π°ΡΠ΅ β Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
unordered_map<string, bool> dp;
string p;
string s;
string remove_duplicate_stars(string p) {
string new_string = "";
for (auto &c : p) {
if (new_string.empty() || c != '*')
new_string += c;
else if (new_string.back() != '*')
new_string += c;
}
return new_string;
}
bool helper(int si, int pi) {
string key = to_string(si) + "," + to_string(pi);
if (dp.count(key)) return dp[key];
if (pi == p.size())
dp[key] = (si == s.size());
else if (si == s.size())
dp[key] = (pi + 1 == p.size() && p[pi] == '*');
else if (p[pi] == s[si] || p[pi] == '?')
dp[key] = helper(si + 1, pi + 1);
else if (p[pi] == '*')
dp[key] = helper(si, pi + 1) || helper(si + 1, pi);
else
dp[key] = false;
return dp[key];
}
bool isMatch(string s, string p) {
dp.clear();
this->s = s;
this->p = remove_duplicate_stars(p);
return helper(0, 0);
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 236
ΠΠ°Π΄Π°ΡΠ°: 955. Delete Columns to Make Sorted II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· n ΡΡΡΠΎΠΊ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΡΠΈΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ strs = ["abcdef", "uvwxyz"] ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ {0, 2, 3}, ΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ["bef", "vyz"]. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ Π½Π°Π±ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠ΄Π°Π»Π΅Π½ΠΈΡ answer ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (Ρ.Π΅, strs[0] <= strs[1] <= strs[2] <= ... <= strs[n - 1]). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ answer.length.
ΠΡΠΈΠΌΠ΅Ρ:
Input: strs = ["ca","bb","ac"] Output: 1π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ n ΠΈ Π΄Π»ΠΈΠ½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ m. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² delete_count Π΄Π»ΠΈΠ½ΠΎΠΉ m, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π°Π»ΡΠ΅ΠΌΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². 2β£ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΡΡΠΎΠΊ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ². ΠΡΠ»ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. 3β£ΠΠΎΠ²ΡΠΎΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. ΠΠ΅ΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Solution {
public:
int minDeletionSize(vector<string>& strs) {
int n = strs.size();
int m = strs[0].length();
vector<bool> deleteCount(m, false);
auto isSorted = [&]() {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
if (strs[i][j] > strs[i + 1][j]) return false;
if (strs[i][j] < strs[i + 1][j]) break;
}
}
return true;
};
while (!isSorted()) {
for (int j = 0; j < m; j++) {
if (deleteCount[j]) continue;
for (int i = 0; i < n - 1; i++) {
if (strs[i][j] > strs[i + 1][j]) {
deleteCount[j] = true;
break;
}
}
if (deleteCount[j]) break;
}
}
return count(deleteCount.begin(), deleteCount.end(), true);
}
};
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ