C# | LeetCode
Kanalga Telegramβda oβtish
Π‘Π°ΠΉΡ: https://easyoffer.ru/ ΠΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ: t.me/+xGeAw6ckJ4liYzQy ΠΠΎΠ½ΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @easyoffer_adv
Ko'proq ko'rsatish3 201
Obunachilar
-224 soatlar
-67 kunlar
-3430 kunlar
Postlar arxiv
3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 654. Maximum Binary Tree
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums Π±Π΅Π· Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ². ΠΠ· nums ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ: ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π», Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π²Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² nums. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»Π΅Π²Π° ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎ ΡΡΡΡΠΈΠΊΡΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΏΡΠ°Π²Π° ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· nums.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [3,2,1,6,0,5] Output: [6,3,5,null,2,0,null,null,1]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ·Π΅Π» Ρ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. 2β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»Π΅Π²Π° ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. 3β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΏΡΠ°Π²Π° ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
public TreeNode ConstructMaximumBinaryTree(int[] nums) {
return Build(nums, 0, nums.Length);
}
private TreeNode Build(int[] nums, int l, int r) {
if (l == r) return null;
int maxIndex = Max(nums, l, r);
TreeNode root = new TreeNode(nums[maxIndex]);
root.left = Build(nums, l, maxIndex);
root.right = Build(nums, maxIndex + 1, r);
return root;
}
private int Max(int[] nums, int l, int r) {
int maxIndex = l;
for (int i = l + 1; i < r; i++) {
if (nums[i] > nums[maxIndex]) {
maxIndex = i;
}
}
return maxIndex;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 655. Print Binary Tree
Π£ΡΠΈΡΡΠ²Π°Ρ ΠΊΠΎΡΠ΅Π½Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°, ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ res Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x n, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΡ Π΄Π΅ΡΠ΅Π²Π°. Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ: Π²ΡΡΠΎΡΠ° Π΄Π΅ΡΠ΅Π²Π° ΡΠ°Π²Π½Π° height, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ m Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ height + 1. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² n Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π²Π½ΠΎ 2height+1 - 1. ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π» Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ (Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π² ΠΏΠΎΠ·ΠΈΡΠΈΡ res[0][(n-1)/2]).
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΠΌΠ°ΡΡΠΈΡΡ Π² ΠΏΠΎΠ·ΠΈΡΠΈΡ res[r][c], ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ΅Π±Π΅Π½ΠΊΠ° Π² res[r+1][c-2height-r-1], Π° ΠΏΡΠ°Π²ΠΎΠ³ΠΎ - Π² res[r+1][c+2height-r-1]. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π²ΡΠ΅ ΡΠ·Π»Ρ Π΄Π΅ΡΠ΅Π²Π°. ΠΡΠ±ΡΠ΅ ΠΏΡΡΡΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ "". ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ res.
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [1,2] Output: [["","1",""], ["2","",""]]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΡΠΎΡΡ Π΄Π΅ΡΠ΅Π²Π° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ (m x n). 2β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ·Π»Ρ Π² ΠΌΠ°ΡΡΠΈΡΠ΅, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΡΠ·Π»Π°. 3β£ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null) {
this.val = val;
this.left = left;
this.right = right;
}
}
public class Solution {
private int FindHeight(TreeNode root) {
if (root == null) return -1;
return 1 + Math.Max(FindHeight(root.left), FindHeight(root.right));
}
private void Fill(string[,] res, TreeNode root, int r, int c, int height) {
if (root == null) return;
res[r, c] = root.val.ToString();
if (root.left != null) {
Fill(res, root.left, r + 1, c - (1 << (height - r - 1)), height);
}
if (root.right != null) {
Fill(res, root.right, r + 1, c + (1 << (height - r - 1)), height);
}
}
public IList<IList<string>> PrintTree(TreeNode root) {
int height = FindHeight(root);
int m = height + 1;
int n = (1 << (height + 1)) - 1;
string[,] res = new string[m, n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
res[i, j] = "";
}
}
Fill(res, root, 0, (n - 1) / 2, height);
IList<IList<string>> result = new List<IList<string>>();
for (int i = 0; i < m; i++) {
IList<string> row = new List<string>();
for (int j = 0; j < n; j++) {
row.Add(res[i, j]);
}
result.Add(row);
}
return result;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#hard
ΠΠ°Π΄Π°ΡΠ°: 656. Coin Path
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠΎΠ½Π΅Ρ (1-ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ) Π΄Π»ΠΈΠ½Ρ n ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ maxJump. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ i ΠΌΠ°ΡΡΠΈΠ²Π° coins, Π΅ΡΠ»ΠΈ coins[i] != -1 ΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΠ»Π°ΡΠΈΡΡ coins[i] ΠΏΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° i. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ i, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ i + k, Π³Π΄Π΅ i + k <= n ΠΈ k - Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [1, maxJump]. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ 1 (coins[1] Π½Π΅ -1). ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° n Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° n Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΉ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΡΡ. ΠΡΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° n, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΡΡΡ p1 = [Pa1, Pa2, ..., Pax] Π΄Π»ΠΈΠ½Ρ x Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ p2 = [Pb1, Pb2, ..., Pbx] Π΄Π»ΠΈΠ½Ρ y, Π΅ΡΠ»ΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ j, Π³Π΄Π΅ Paj ΠΈ Pbj ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Paj < Pbj; Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ j Π½Π΅Ρ, ΡΠΎ x < y.
ΠΡΠΈΠΌΠ΅Ρ:
Input: coins = [1,2,4,-1,2], maxJump = 2 Output: [1,3,5]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ. 2β£Π₯ΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΡΡ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΡΠΈ. 3β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public List<int> MinCostPath(int[] coins, int maxJump) {
int n = coins.Length;
if (coins[0] == -1) return new List<int>();
int[] dp = new int[n];
Array.Fill(dp, int.MaxValue);
dp[0] = coins[0];
List<int>[] path = new List<int>[n];
for (int i = 0; i < n; i++) path[i] = new List<int>();
path[0].Add(1);
PriorityQueue<(int cost, int index), int> heap = new PriorityQueue<(int, int), int>();
heap.Enqueue((coins[0], 0), coins[0]);
while (heap.Count > 0) {
var (currentCost, i) = heap.Dequeue();
if (currentCost > dp[i]) continue;
for (int k = 1; k <= maxJump; k++) {
if (i + k < n && coins[i + k] != -1) {
int newCost = currentCost + coins[i + k];
if (newCost < dp[i + k] || (newCost == dp[i + k] && ComparePaths(path[i], path[i + k], i + k + 1))) {
dp[i + k] = newCost;
path[i + k] = new List<int>(path[i]);
path[i + k].Add(i + k + 1);
heap.Enqueue((newCost, i + k), newCost);
}
}
}
}
return dp[n - 1] == int.MaxValue ? new List<int>() : path[n - 1];
}
private bool ComparePaths(List<int> path1, List<int> path2, int newIndex) {
List<int> newPath1 = new List<int>(path1);
newPath1.Add(newIndex);
return string.Join(",", newPath1).CompareTo(string.Join(",", path2)) < 0;
}
public static void Main(string[] args) {
Solution solution = new Solution();
int[] coins = { 0, 2, 4, -1, 2, 5 };
int maxJump = 2;
var result = solution.MinCostPath(coins, maxJump);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 646. Maximum Length of Pair Chain
ΠΠ°ΠΌ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· n ΠΏΠ°Ρ, Π³Π΄Π΅ pairs[i] = [lefti, righti] ΠΈ lefti < righti. ΠΠ°ΡΠ° p2 = [c, d] ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΠΏΠ°ΡΠΎΠΉ p1 = [a, b], Π΅ΡΠ»ΠΈ b < c. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΠ°Ρ. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΌΡΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,2,2,4] Output: [2,3]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΠ°ΡΡ ΠΏΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ (righti). 2β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΆΠ°Π΄Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. 3β£ΠΠ΅ΡΠ΅Π±Π΅ΡΠΈΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΡ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Π° Π·Π° Π΄ΡΡΠ³ΠΎΠΉ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ Π΄Π»ΠΈΠ½Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int FindLongestChain(int[][] pairs) {
Array.Sort(pairs, (a, b) => a[1] - b[1]);
int currentEnd = int.MinValue;
int count = 0;
foreach (var pair in pairs) {
if (currentEnd < pair[0]) {
currentEnd = pair[1];
count++;
}
}
return count;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#easy
ΠΠ°Π΄Π°ΡΠ°: 645. Set Mismatch
Π£ Π²Π°Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» s, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ n. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠ·-Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡΠ΅Π» Π² s ΠΏΡΠΎΠ΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π² Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π½Π°Π±ΠΎΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
Π² ΡΡΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΈ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΡ
Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,2,2,4] Output: [2,3]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°Π±ΠΎΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ΅Π», ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. 2β£ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΌΠΌΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ n ΠΈ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠΌΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π°. 3β£ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int[] FindErrorNums(int[] nums) {
int n = nums.Length;
HashSet<int> numSet = new HashSet<int>();
int duplicate = -1;
foreach (int num in nums) {
if (!numSet.Add(num)) {
duplicate = num;
}
}
int missing = (n * (n + 1)) / 2 - numSet.Sum();
return new int[] { duplicate, missing };
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
β ΠΠΎΠΌΠΎΡΡ Ρ pet-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ
β Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ roadmap
β ΠΠ±ΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ
β ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄-ΡΠ΅Π²ΡΡ ΠΈ mock-ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ
β ΠΠΎΠΌΠΎΡΡ Ρ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ
ΠΡΠ΅ ΡΡΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΠ΅Π½ΡΠΎΡ. ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ boost, ΡΡΠΊΠΎΡΠΈΡ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡ Π²Ρ
ΠΎΠ΄ Π² IT.
π₯ ΠΠ΄Π΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ΅Π½ΡΠΎΡΠΎΠ², ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ
ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ
3 202
#hard
ΠΠ°Π΄Π°ΡΠ°: 644. Maximum Average Subarray II
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ², Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° k ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΡΠ²Π΅Ρ Ρ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠ΅Π½Π΅Π΅ 10-5.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ Π΄Π»ΠΈΠ½Ρ k Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. 2β£ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ±ΠΈΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. 3β£Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄Π½ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΠΊΠΎΠ½. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public double FindMaxAverage(int[] nums, int k) {
int currSum = nums.Take(k).Sum();
int maxSum = currSum;
for (int i = k; i < nums.Length; i++) {
currSum += nums[i] - nums[i - k];
if (currSum > maxSum) {
maxSum = currSum;
}
}
return (double)maxSum / k;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#easy
ΠΠ°Π΄Π°ΡΠ°: 643. Maximum Average Subarray I
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· n ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ², Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π²Π½Π° k ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΡΠ²Π΅Ρ Ρ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠ΅Π½Π΅Π΅ 10-5.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,12,-5,-6,50,3], k = 4 Output: 12.75000π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΠΏΠ΅ΡΠ²ΡΡ k ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° nums. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ. 2β£ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΎΠΊΠ½ΠΎ Π΄Π»ΠΈΠ½ΠΎΠΉ k ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ±ΠΈΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΌΠΌΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°. 3β£ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠΌΠΌΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΡΠΌΠΌΠ° Π±ΠΎΠ»ΡΡΠ΅, ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠΌΠΌΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public double FindMaxAverage(int[] nums, int k) {
int currentSum = 0;
for (int i = 0; i < k; i++) {
currentSum += nums[i];
}
int maxSum = currentSum;
for (int i = k; i < nums.Length; i++) {
currentSum += nums[i] - nums[i - k];
maxSum = Math.Max(maxSum, currentSum);
}
return (double)maxSum / k;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#hard
ΠΠ°Π΄Π°ΡΠ°: 568. Maximum Vacation Days
LeetCode Ρ
ΠΎΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
Π»ΡΡΡΠΈΡ
ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠΎ n Π³ΠΎΡΠΎΠ΄Π°ΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, "Π΄Π΅Π»Ρ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΠ΅Ρ
Π΅ ΡΠ°Ρ". ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΠ°ΡΡ ΠΎΡΠΏΡΡΠΊΠ° Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
Π³ΠΎΡΠΎΠ΄Π°Ρ
ΠΈ Π½Π΅Π΄Π΅Π»ΡΡ
. ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΡΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΅Π·Π΄ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ ΠΎΡΠΏΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ, ΡΠΎΠ±Π»ΡΠ΄Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ n Π³ΠΎΡΠΎΠ΄Π°ΠΌΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ n-1. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π³ΠΎΡΠΎΠ΄Π΅ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 Π² ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ.
ΠΠΎΡΠΎΠ΄Π° ΡΠ²ΡΠ·Π°Π½Ρ ΡΠ΅ΠΉΡΠ°ΠΌΠΈ. Π Π΅ΠΉΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ n x n, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ flights, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΡ Π°Π²ΠΈΠ°Π»ΠΈΠ½ΠΈΠΈ ΠΎΡ Π³ΠΎΡΠΎΠ΄Π° i Π΄ΠΎ Π³ΠΎΡΠΎΠ΄Π° j. ΠΡΠ»ΠΈ ΡΠ΅ΠΉΡΠ° ΠΈΠ· Π³ΠΎΡΠΎΠ΄Π° i Π² Π³ΠΎΡΠΎΠ΄ j Π½Π΅Ρ, flights[i][j] == 0; ΠΈΠ½Π°ΡΠ΅ flights[i][j] == 1. Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ
i Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ flights[i][i] == 0.
Π£ Π²Π°Ρ Π΅ΡΡΡ k Π½Π΅Π΄Π΅Π»Ρ (ΠΊΠ°ΠΆΠ΄Π°Ρ Π½Π΅Π΄Π΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΠΌΠΈ Π΄Π½Π΅ΠΉ) Π΄Π»Ρ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅ΡΠ°ΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π° Π² Π΄Π΅Π½Ρ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊΠ°. ΠΡΠ΅ΠΌΡ ΠΏΠΎΠ»Π΅ΡΠ° Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅, ΡΡΠΎ Π΅Π³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π³ΠΎΡΠΎΠ΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π΄Π½ΠΈ ΠΎΡΠΏΡΡΠΊΠ° Π² ΡΠ°Π·Π½ΡΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ n x k, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ days. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ days[i][j] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ ΠΎΡΠΏΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ Π² Π³ΠΎΡΠΎΠ΄Π΅ i Π½Π° Π½Π΅Π΄Π΅Π»Π΅ j.
ΠΠ°Π½Ρ Π΄Π²Π΅ ΠΌΠ°ΡΡΠΈΡΡ flights ΠΈ days, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ ΠΎΡΠΏΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ k Π½Π΅Π΄Π΅Π»Ρ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: flights = [[0,1,1],[1,0,1],[1,1,0]], days = [[1,3,1],[6,0,3],[3,3,3]] Output: 12 Explanation: One of the best strategies is: 1st week : fly from city 0 to city 1 on Monday, and play 6 days and work 1 day. (Although you start at city 0, we could also fly to and start at other cities since it is Monday.) 2nd week : fly from city 1 to city 2 on Monday, and play 3 days and work 4 days. 3rd week : stay at city 2, and play 3 days and work 4 days. Ans = 6 + 3 + 3 = 12.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ dfs (ΠΏΠΎΠΈΡΠΊ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΏΡΡΠΊΠ½ΡΡ Π΄Π½Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ΄Π° cur_city ΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ weekno. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π³ΠΎΡΠΎΠ΄Π°ΠΌ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π²ΡΠ΅ Π³ΠΎΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π³ΠΎΡΠΎΠ΄ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ Π³ΠΎΡΠΎΠ΄ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ 1 Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ flights[cur_city][i]. 2β£ΠΠ»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΎΡΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΅Ρ Π°ΡΡ Π² ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Π³ΠΎΡΠΎΠ΄. ΠΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ Π³ΠΎΡΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ j. ΠΠΎΡΠ»Π΅ ΡΠΌΠ΅Π½Ρ Π³ΠΎΡΠΎΠ΄Π° Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΏΡΡΠΊΠ½ΡΡ Π΄Π½Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΡΠΎΠ΄Π° ΠΈ Ρ Π½ΠΎΠ²ΠΎΠΉ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΏΡΡΠΊΠ½ΡΡ Π΄Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ: days[j][weekno] + dfs(flights, days, j, weekno + 1). 3β£ΠΠ»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΏΡΡΠΊΠ½ΡΡ Π΄Π½Π΅ΠΉ, Π²ΡΠ±ΠΈΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π³ΠΎΡΠΎΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ· Π²ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΡΠΏΡΡΠΊΠ½ΡΡ Π΄Π½Π΅ΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ dfs. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int MaxVacationDays(int[][] flights, int[][] days) {
int n = flights.Length, k = days[0].Length;
int[][] memo = new int[n][];
for (int i = 0; i < n; i++) {
memo[i] = new int[k];
Array.Fill(memo[i], -1);
}
return Dfs(flights, days, memo, 0, 0);
}
private int Dfs(int[][] flights, int[][] days, int[][] memo, int curCity, int weekNo) {
int n = flights.Length, k = days[0].Length;
if (weekNo == k) return 0;
if (memo[curCity][weekNo] != -1) return memo[curCity][weekNo];
int maxVac = 0;
for (int nextCity = 0; nextCity < n; nextCity++) {
if (curCity == nextCity || flights[curCity][nextCity] == 1) {
maxVac = Math.Max(maxVac, days[nextCity][weekNo] + Dfs(flights, days, memo, nextCity, weekNo + 1));
}
}
memo[curCity][weekNo] = maxVac;
return maxVac;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
πΊ Π£Π½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π±Π°Π·Π° IT ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ
370+ ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΎΡΠΈΠ΅ IT ΠΏΡΠΎΡΡ.
ΠΡΡΡ ΡΠΎΠ±Π΅ΡΡ ΠΎΡ Π²Π΅Π΄ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ: Π‘Π±Π΅Ρ, Π―Π½Π΄Π΅ΠΊΡ, ΠΠ’Π, Π’ΠΈΠ½ΡΠΊΠΎΡΡ, ΠΠ·ΠΎΠ½, Wildberries ΠΈ Ρ.Π΄.
π― ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ ΠΊ Π±Π°Π·Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π½ΡΡ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ!
3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 641. Design Circular Deque
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΡΡΠ³ΠΎΠ²ΠΎΠΉ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ (deque). Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ MyCircularDeque: MyCircularDeque(int k) ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ deque Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ k. boolean insertFront() ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. boolean insertLast() ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π·Π°Π΄Π½ΡΡ ΡΠ°ΡΡΡ Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. boolean deleteFront() Π£Π΄Π°Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. boolean deleteLast() Π£Π΄Π°Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Π·Π°Π΄Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. int getFront() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ -1, Π΅ΡΠ»ΠΈ Deque ΠΏΡΡΡ. int getRear() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Deque. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ -1, Π΅ΡΠ»ΠΈ Deque ΠΏΡΡΡ. boolean isEmpty() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Deque ΠΏΡΡΡ, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. boolean isFull() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Deque ΠΏΠΎΠ»ΠΎΠ½, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input ["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"] [[3], [1], [2], [3], [4], [], [], [], [4], []] Output [null, true, true, true, false, 2, true, true, true, 4]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΡΡΠΎΡΡ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. 2β£ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠ΅ΡΠ΅Π΄Π½ΡΡ ΠΈ Π·Π°Π΄Π½ΡΡ ΡΠ°ΡΡΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ. 3β£ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΉ ΠΈ Π·Π°Π΄Π½Π΅ΠΉ ΡΠ°ΡΡΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΈ Π·Π°Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class MyCircularDeque {
private int[] deque;
private int front;
private int rear;
private int size;
private int capacity;
public MyCircularDeque(int k) {
capacity = k;
deque = new int[k];
front = 0;
rear = 0;
size = 0;
}
public bool InsertFront(int value) {
if (IsFull()) return false;
front = (front - 1 + capacity) % capacity;
deque[front] = value;
size++;
return true;
}
public bool InsertLast(int value) {
if (IsFull()) return false;
deque[rear] = value;
rear = (rear + 1) % capacity;
size++;
return true;
}
public bool DeleteFront() {
if (IsEmpty()) return false;
front = (front + 1) % capacity;
size--;
return true;
}
public bool DeleteLast() {
if (IsEmpty()) return false;
rear = (rear - 1 + capacity) % capacity;
size--;
return true;
}
public int GetFront() {
if (IsEmpty()) return -1;
return deque[front];
}
public int GetRear() {
if (IsEmpty()) return -1;
return deque[(rear - 1 + capacity) % capacity];
}
public bool IsEmpty() {
return size == 0;
}
public bool IsFull() {
return size == capacity;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 567. Permutation in String
ΠΠ°Π½Ρ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ s1 ΠΈ s2. ΠΠ΅ΡΠ½ΠΈΡΠ΅ true, Π΅ΡΠ»ΠΈ s2 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΡ s1, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Π΅ΡΠ½ΠΈΡΠ΅ true, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ s1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΎΠΉ s2.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s1 = "ab", s2 = "eidbaooo"
Output: true
Explanation: s2 contains one permutation of s1 ("ba").
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅ s1. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΡΡ
len(s1) ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΡΠΎΠΊΠΈ s2.
2β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ»ΡΠ·ΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ s2. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΠΊΠ½Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ s1.
3β£ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΡΠ°ΠΏΠ΅, Π²Π΅ΡΠ½ΡΡΡ true. ΠΡΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ s2 ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Π²Π΅ΡΠ½ΡΡΡ false.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public bool CheckInclusion(string s1, string s2) {
int s1Len = s1.Length, s2Len = s2.Length;
if (s1Len > s2Len) return false;
int[] s1Count = new int[26];
int[] s2Count = new int[26];
for (int i = 0; i < s1Len; i++) {
s1Count[s1[i] - 'a']++;
s2Count[s2[i] - 'a']++;
}
for (int i = 0; i < s2Len - s1Len; i++) {
if (s1Count.SequenceEqual(s2Count)) return true;
s2Count[s2[i] - 'a']--;
s2Count[s2[i + s1Len] - 'a']++;
}
return s1Count.SequenceEqual(s2Count);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#easy
ΠΠ°Π΄Π°ΡΠ°: 566. Reshape the Matrix
Π MATLAB Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ reshape, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x n Π² Π½ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ r x c, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΌ Π΄Π°Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° m x n mat ΠΈ Π΄Π²Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ»Π° r ΠΈ c, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π²ΡΠ΅ΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄Π° ΡΡΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ.
ΠΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: mat = [[1,2],[3,4]], r = 1, c = 4
Output: [[1,2,3,4]]
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ r ΠΈ c. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ m * n ΡΠ°Π²Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ r * c. ΠΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π΅ΡΠ½ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
2β£Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ. ΠΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π² Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄Π° ΡΡΡΠΎΠΊ.
3β£ΠΠ΅ΡΠ½ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ½Π°ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int[][] MatrixReshape(int[][] mat, int r, int c) {
int m = mat.Length, n = mat[0].Length;
if (m * n != r * c) {
return mat;
}
int[][] reshapedMatrix = new int[r][];
for (int i = 0; i < r; i++) {
reshapedMatrix[i] = new int[c];
}
int row = 0, col = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
reshapedMatrix[row][col] = mat[i][j];
col++;
if (col == c) {
col = 0;
row++;
}
}
}
return reshapedMatrix;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 640. Solve the Equation
Π Π΅ΡΠΈΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'x' Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ "x=#value". Π£ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ '+', '-', ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ 'x' ΠΈ Π΅Π΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π΅ΡΠ½ΡΡΡ "No solution", Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΈΠ»ΠΈ "Infinite solutions", Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΌΡ ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'x' ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "*" Output: 9π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ ΡΠ°ΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π° '='. 2β£ΠΠ°ΡΡΠΈΠ½Π³ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠΎΡΠ°Ρ Π΅Π΅ Π΄ΠΎ ΡΡΠΌΠΌΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² 'x' ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. 3β£Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ax + b = cx + d, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ Π΄Π»Ρ 'x'. ΠΡΠ»ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ 'x' ΡΠ°Π²Π½Ρ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π²Π½Ρ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ 'x' ΡΠ°Π²Π½Ρ, Π½ΠΎ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½Ρ, ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'x'. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Text.RegularExpressions;
public class Solution {
public string SolveEquation(string equation) {
string[] sides = equation.Split('=');
int[] left = Parse(sides[0]);
int[] right = Parse(sides[1]);
int coeff = left[0] - right[0];
int constPart = right[1] - left[1];
if (coeff == 0) {
return constPart == 0 ? "Infinite solutions" : "No solution";
}
return "x=" + (constPart / coeff);
}
private int[] Parse(string s) {
int coeff = 0, constPart = 0, sign = 1, num = 0;
int i = 0;
while (i < s.Length) {
if (s[i] == '+') {
sign = 1;
i++;
} else if (s[i] == '-') {
sign = -1;
i++;
} else if (char.IsDigit(s[i])) {
num = 0;
while (i < s.Length && char.IsDigit(s[i])) {
num = num * 10 + (s[i] - '0');
i++;
}
if (i < s.Length && s[i] == 'x') {
coeff += sign * num;
i++;
} else {
constPart += sign * num;
}
} else if (s[i] == 'x') {
coeff += sign;
i++;
}
}
return new int[]{coeff, constPart};
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#hard
ΠΠ°Π΄Π°ΡΠ°: 639. Decode Ways II
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π±ΡΠΊΠ²Ρ ΠΎΡ A-Z, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΡΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: 'A' -> "1" 'B' -> "2" ... 'Z' -> "26" Π§ΡΠΎΠ±Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ΅ ΡΠΈΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² Π±ΡΠΊΠ²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "11106" ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π²: "AAJF" Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ (1 1 10 6) "KJF" Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ (11 10 6) ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° (1 11 06) Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ "06" Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π² "F", ΡΠ°ΠΊ ΠΊΠ°ΠΊ "6" ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ "06". Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "*", ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π»ΡΠ±ΡΡ ΡΠΈΡΡΡ ΠΎΡ "1" Π΄ΠΎ "9" ("0" ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "1*" ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ "11", "12", "13", "14", "15", "16", "17", "18" ΠΈΠ»ΠΈ "19". ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ "1*" ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ. ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΡΡΡΠΎΠΊΠ° s, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΠΈΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² '*', Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΅Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 109 + 7.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "*" Output: 9π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² dp, Π³Π΄Π΅ dp[i] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ s[0:i]. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ dp[0] = 1 (ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ). 2β£ΠΠ±Ρ ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΊΠ» Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° '*'. 3β£ΠΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ, Π²ΡΡΠΈΡΠ»ΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 10^9 + 7. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
public class Solution {
public int NumDecodings(string s) {
const int MOD = 1000000007;
int n = s.Length;
long[] dp = new long[n + 1];
dp[0] = 1;
for (int i = 1; i <= n; i++) {
if (s[i - 1] == '*') {
dp[i] = 9 * dp[i - 1];
} else if (s[i - 1] != '0') {
dp[i] = dp[i - 1];
}
if (i > 1) {
if (s[i - 2] == '*') {
if (s[i - 1] == '*') {
dp[i] += 15 * dp[i - 2];
} else if (s[i - 1] <= '6') {
dp[i] += 2 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] == '1') {
if (s[i - 1] == '*') {
dp[i] += 9 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] == '2') {
if (s[i - 1] == '*') {
dp[i] += 6 * dp[i - 2];
} else if (s[i - 1] <= '6') {
dp[i] += dp[i - 2];
}
}
}
dp[i] %= MOD;
}
return (int)dp[n];
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 638. Shopping Offers
Π ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ LeetCode Store Π΅ΡΡΡ n ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ²Π°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π²ΠΈΠ΄ΠΎΠ² ΡΠΎΠ²Π°ΡΠΎΠ² Ρ ΡΠ°ΡΠΏΡΠΎΠ΄Π°ΠΆΠ½ΠΎΠΉ ΡΠ΅Π½ΠΎΠΉ. ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² price, Π³Π΄Π΅ price[i] - ΡΠ΅Π½Π° i-Π³ΠΎ ΡΠΎΠ²Π°ΡΠ°, ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² needs, Π³Π΄Π΅ needs[i] - ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΊ i-Π³ΠΎ ΡΠΎΠ²Π°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΊΡΠΏΠΈΡΡ. ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² special, Π³Π΄Π΅ special[i] ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ n + 1, Π³Π΄Π΅ special[i][j] - ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΊ j-Π³ΠΎ ΡΠΎΠ²Π°ΡΠ° Π² i-ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π° special[i][n] (Ρ.Π΅., ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΡΡ ΡΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠ»Π°ΡΠΈΡΡ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΎΠ²Π°Ρ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΡΡ
, Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΌ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ², ΡΠ΅ΠΌ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ½ΠΈΠ·ΠΈΡ ΠΎΠ±ΡΡΡ ΡΠ΅Π½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: price = [2,5], special = [[3,0,5],[1,2,10]], needs = [3,2] Output: 14π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π½ΡΠΆΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΡΠΆΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. 2β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠΎΠ²Π°ΡΠΎΠ² Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ΄. ΠΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. 3β£ΠΡΠ±ΠΎΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΊΡΠΏΠΊΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ² ΠΏΠΎ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅Π½Π°ΠΌ, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int ShoppingOffers(IList<int> price, IList<IList<int>> special, IList<int> needs) {
var memo = new Dictionary<string, int>();
return Dfs(price, special, needs, memo);
}
private int Dfs(IList<int> price, IList<IList<int>> special, IList<int> needs, Dictionary<string, int> memo) {
string key = Serialize(needs);
if (memo.ContainsKey(key)) {
return memo[key];
}
int minPrice = 0;
for (int i = 0; i < needs.Count; i++) {
minPrice += needs[i] * price[i];
}
foreach (var offer in special) {
var newNeeds = new List<int>();
bool valid = true;
for (int i = 0; i < needs.Count; i++) {
if (needs[i] < offer[i]) {
valid = false;
break;
}
newNeeds.Add(needs[i] - offer[i]);
}
if (valid) {
minPrice = Math.Min(minPrice, offer[needs.Count] + Dfs(price, special, newNeeds, memo));
}
}
memo[key] = minPrice;
return minPrice;
}
private string Serialize(IList<int> needs) {
return string.Join(",", needs);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
ΠΠ°ΡΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ Π½Π° Π―Π½Π΄Π΅ΠΊΡ ΠΡΠ·ΡΠΊΡ
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° 1 Π²ΠΎΠΏΡΠΎΡ ΠΈ Π―Π½Π΄Π΅ΠΊΡ ΠΡΠ·ΡΠΊΠ° Π΄Π»Ρ Π²Π°Ρ ΠΈ 3-Ρ
Π²Π°ΡΠΈΡ
Π±Π»ΠΈΠ·ΠΊΠΈΡ
30 Π΄Π½Π΅ΠΉ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
ΠΠΈΠ½ΠΎΠΏΠΎΠΈΡΠΊ ΠΈ Π―Π½Π΄Π΅ΠΊΡ ΠΠ½ΠΈΠ³ΠΈ ΡΠΎΠΆΠ΅ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ΅.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρβ€οΈ
ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ
#ΡΠ΅ΠΊΠ»Π°ΠΌΠ° 18+
music.yandex.ru
Π ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°ΡΠ΅Π»Π΅
Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° Π―Π½Π΄Π΅ΠΊΡΠ΅
3 202
#easy
ΠΠ°Π΄Π°ΡΠ°: 637. Average of Levels in Binary Tree
Π£ΡΠΈΡΡΠ²Π°Ρ ΠΊΠΎΡΠ΅Π½Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
10-5 ΠΎΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: root = [3,9,20,null,null,15,7] Output: [3.00000,14.50000,11.00000]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ±Ρ ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ Π² ΡΠΈΡΠΈΠ½Ρ (BFS) Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π΅ΡΠ΅Π²Π°. 2β£ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π΅ΡΠ΅Π²Π° ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΌΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·Π»ΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ², ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. 3β£Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public IList<double> AverageOfLevels(TreeNode root) {
var result = new List<double>();
var queue = new Queue<TreeNode>();
queue.Enqueue(root);
while (queue.Count > 0) {
long sum = 0;
int count = queue.Count;
for (int i = 0; i < count; i++) {
var node = queue.Dequeue();
sum += node.val;
if (node.left != null) queue.Enqueue(node.left);
if (node.right != null) queue.Enqueue(node.right);
}
result.Add((double)sum / count);
}
return result;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 636. Exclusive Time of Functions
ΠΠ° ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ n ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ID ΠΎΡ 0 Π΄ΠΎ n-1. ΠΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ²: ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅Π΅ ID Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ΅ΠΊ, Π° ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, Π΅Π΅ ID Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ, ΡΠ΅ΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ΅ΠΊΠ°, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π»ΠΎΠ³ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΈΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΌΠ΅ΡΠΊΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ logs, Π³Π΄Π΅ logs[i] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ i-Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π°, ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° "{function_id}:{"start" | "end"}:{timestamp}". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "0:start:3" ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ 0 Π½Π°ΡΠ°Π»ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ 3, Π° "1:end:2" ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ 1 Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ 2. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ. ΠΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ - ΡΡΠΎ ΡΡΠΌΠΌΠ° Π²ΡΠ΅ΠΌΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ Π²ΡΠ·ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π° 2 Π΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π΄ΡΡΠ³ΠΎΠΉ - Π·Π° 1 Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΡΠΎ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π²Π½ΠΎ 2 + 1 = 3. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ², Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ i-ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ i.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 2, logs = ["0:start:0","1:start:2","1:end:5","0:end:6"] Output: [3,4]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΡΡΠΈΠ½Π³ Π»ΠΎΠ³ΠΎΠ² ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π»ΠΎΠ³Ρ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (start ΠΈΠ»ΠΈ end) ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΎΠΉ. 2β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ΅ΠΊ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠ»ΠΈ Π»ΠΎΠ³ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ start, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΡΠ΅ΠΊ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΎΡΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ Π»ΠΎΠ³ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ end, ΡΠ½ΠΈΠΌΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎ ΡΡΠ΅ΠΊΠ° ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. 3β£ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public int[] ExclusiveTime(int n, IList<string> logs) {
Stack<int> stack = new Stack<int>();
int[] times = new int[n];
int prevTime = 0;
foreach (string log in logs) {
string[] parts = log.Split(':');
int fid = int.Parse(parts[0]);
string type = parts[1];
int time = int.Parse(parts[2]);
if (type == "start") {
if (stack.Count > 0) {
times[stack.Peek()] += time - prevTime;
}
stack.Push(fid);
prevTime = time;
} else {
times[stack.Pop()] += time - prevTime + 1;
prevTime = time + 1;
}
}
return times;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 202
#medium
ΠΠ°Π΄Π°ΡΠ°: 635. Design Log Storage System
ΠΠ°ΠΌ Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΡΡΠ½Π°Π»ΠΎΠ², Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΆΡΡΠ½Π°Π» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΊΡ. ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ° - ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ: ΠΠΎΠ΄:ΠΠ΅ΡΡΡ:ΠΠ΅Π½Ρ:Π§Π°Ρ:ΠΠΈΠ½ΡΡΠ°:Π‘Π΅ΠΊΡΠ½Π΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2017:01:01:23:59:59. ΠΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Ρ - Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Ρ Π½ΡΠ»Π΅Π²ΡΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° LogSystem: LogSystem() ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ LogSystem. void put(int id, string timestamp) Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΆΡΡΠ½Π°Π» (id, timestamp) Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ.
int[] retrieve(string start, string end, string granularity) ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ², Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ ΠΊΠΎΡΠΎΡΡΡ
Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ start Π΄ΠΎ end Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ. start ΠΈ end ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΎΡΠΌΠ°Ρ, ΡΡΠΎ ΠΈ timestamp, Π° granularity ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ½ΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (Ρ. Π΅. Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ Π΄Π½Ρ, ΠΌΠΈΠ½ΡΡΡ ΠΈ Ρ. Π΄.). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, start = "2017:01:01:23:59:59", end = "2017:01:02:23:59:59", Π° granularity = "Day" ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΆΡΡΠ½Π°Π»Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 1 ΡΠ½Π²Π°ΡΡ 2017 Π³ΠΎΠ΄Π° Π΄ΠΎ 2 ΡΠ½Π²Π°ΡΡ 2017 Π³ΠΎΠ΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π° ΡΠ°Ρ, ΠΌΠΈΠ½ΡΡΡ ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΆΡΡΠ½Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input ["LogSystem", "put", "put", "put", "retrieve", "retrieve"] [[], [1, "2017:01:01:23:59:59"], [2, "2017:01:01:22:59:59"], [3, "2016:01:01:00:00:00"], ["2016:01:01:01:01:01", "2017:01:01:23:00:00", "Year"], ["2016:01:01:01:01:01", "2017:01:01:23:00:00", "Hour"]] Output [null, null, null, null, [3, 2, 1], [2, 1]]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ put, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΆΡΡΠ½Π°Π» Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ id ΠΈ timestamp Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. 2β£Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ retrieve, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ start, end ΠΈ granularity. 3β£Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ΅Ρ ΠΆΡΡΠ½Π°Π»ΠΎΠ², ΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΡΡΠΎΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class LogSystem {
private List<LogEntry> logs;
public LogSystem() {
logs = new List<LogEntry>();
}
public void Put(int id, string timestamp) {
logs.Add(new LogEntry(id, timestamp));
}
public IList<int> Retrieve(string start, string end, string granularity) {
int index = GetGranularityIndex(granularity);
string startPrefix = start.Substring(0, index);
string endPrefix = end.Substring(0, index);
List<int> result = new List<int>();
foreach (var log in logs) {
string timestampPrefix = log.Timestamp.Substring(0, index);
if (startPrefix.CompareTo(timestampPrefix) <= 0 && timestampPrefix.CompareTo(endPrefix) <= 0) {
result.Add(log.Id);
}
}
return result;
}
private int GetGranularityIndex(string granularity) {
switch (granularity) {
case "Year": return 4;
case "Month": return 7;
case "Day": return 10;
case "Hour": return 13;
case "Minute": return 16;
case "Second": return 19;
default: return 19;
}
}
private class LogEntry {
public int Id { get; }
public string Timestamp { get; }
public LogEntry(int id, string timestamp) {
Id = id;
Timestamp = timestamp;
}
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ