C# | LeetCode
Open in Telegram
Π‘Π°ΠΉΡ: https://easyoffer.ru/ ΠΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ: t.me/+xGeAw6ckJ4liYzQy ΠΠΎΠ½ΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @easyoffer_adv
Show more3 204
Subscribers
-224 hours
-47 days
-3430 days
Posts Archive
3 204
ΠΠ°Π΄Π°ΡΠ°: 323. Number of Connected Components in an Undirected Graph
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π£ Π²Π°Ρ Π΅ΡΡΡ Π³ΡΠ°Ρ ΠΈΠ· n ΡΠ·Π»ΠΎΠ². ΠΠ°ΠΌ Π΄Π°Π½ΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n ΠΈ ΠΌΠ°ΡΡΠΈΠ² edges, Π³Π΄Π΅ edges[i] = [ai, bi] ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅Π±ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ai ΠΈ bi Π² Π³ΡΠ°ΡΠ΅.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΡΠ·Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Π³ΡΠ°ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 5, edges = [[0,1],[1,2],[3,4]] Output: 2π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΎΠΉ ΡΡΠΎ adj[v] ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠ½Ρ Π²Π΅ΡΡΠΈΠ½Ρ v. 2β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΡ ΡΠ·Π»ΠΎΠ² ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Ρ ΡΡ-ΠΊΠ°ΡΡΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² visited Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠ½. 3β£ΠΠΎΠ΄ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ Π½ΡΠ»Π΅ΠΌ. ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Π΅ Π² edges, ΠΈ Π΅ΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠ½Π° Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»Π° ΠΏΠΎΡΠ΅ΡΠ΅Π½Π°, Π½Π°ΡΠ½ΠΈΡΠ΅ DFS Ρ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ. ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ, ΠΏΠΎΡΠ΅ΡΠ΅Π½Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ DFS, Π² visited. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ DFS, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ Π½Π° ΠΎΠ΄ΠΈΠ½. Π ΠΊΠΎΠ½ΡΠ΅, ΡΡΠ΅ΡΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΡΠ·Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Π½Π΅ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π³ΡΠ°ΡΠ΅. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int CountComponents(int n, int[][] edges) {
var adj = new Dictionary<int, List<int>>();
for (int i = 0; i < n; i++) adj[i] = new List<int>();
foreach (var edge in edges) {
adj[edge[0]].Add(edge[1]);
adj[edge[1]].Add(edge[0]);
}
var visited = new HashSet<int>();
int count = 0;
void Dfs(int node) {
var stack = new Stack<int>();
stack.Push(node);
while (stack.Count > 0) {
var current = stack.Pop();
if (visited.Add(current)) {
foreach (var neighbor in adj[current]) {
if (!visited.Contains(neighbor)) stack.Push(neighbor);
}
}
}
}
for (int i = 0; i < n; i++) {
if (visited.Add(i)) {
Dfs(i);
count++;
}
}
return count;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 1100. Find K-Length Substrings With No Repeated Characters
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½Π° ΡΡΡΠΎΠΊΠ° s ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ Π² s Π΄Π»ΠΈΠ½ΠΎΠΉ k, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ
ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "havefunonleetcode", k = 5 Output: 6 Explanation: There are 6 substrings they are: 'havef','avefu','vefun','efuno','etcod','tcode'.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠ»ΠΈ k > 26, Π²Π΅ΡΠ½ΠΈΡΠ΅ 0, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠΎΠΊΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 26 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π², Π³Π΄Π΅ k <= 26, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ Π΄Π»ΠΈΠ½ΠΎΠΉ k Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². 2β£ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ s ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 0 Π΄ΠΎ n - k (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ), Π³Π΄Π΅ n - Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ s: ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° i: ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ»Π°Π³ isUnique ΠΊΠ°ΠΊ true ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 26 Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠ°ΡΡΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ k ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΡΡΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠ°ΡΡΠΎΡ. ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΎΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 1, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ isUnique Π² false ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ k ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΡΠ»Π°Π³ isUnique Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π²Π΅Π½ true, ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° 1. 3β£ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ ΠΎΡ 0 Π΄ΠΎ n - k. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int NumKLenSubstrNoRepeats(string s, int k) {
if (k > 26) return 0;
int answer = 0;
int n = s.Length;
for (int i = 0; i <= n - k; i++) {
int[] freq = new int[26];
bool isUnique = true;
for (int j = i; j < i + k; j++) {
freq[s[j] - 'a']++;
if (freq[s[j] - 'a'] > 1) {
isUnique = false;
break;
}
}
if (isUnique) answer++;
}
return answer;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 216. Combination Sum III
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ k ΡΠΈΡΠ΅Π», ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΡΠΌΠΌΠ΅ Π΄Π°ΡΡ n, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ 9.
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ. Π‘ΠΏΠΈΡΠΎΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ, ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: k = 3, n = 9 Output: [[1,2,6],[1,3,5],[2,3,4]] Explanation: 1 + 2 + 6 = 9 1 + 3 + 5 = 9 2 + 3 + 4 = 9 There are no other valid combinations.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ backtrack, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΡΠΌΠΌΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ k, ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ, ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΡΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ backtrack Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ: ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ n, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ k, ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ, Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 ΠΈ ΠΏΡΡΡΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². 2β£Π Π΅ΠΊΡΡΡΠΈΠ²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°: Π ΡΡΠ½ΠΊΡΠΈΠΈ backtrack ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΡΠΌΠΌΠ° ΡΠ°Π²Π½Π° Π½ΡΠ»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ°Π²Π΅Π½ k, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΡΠΌΠΌΠ° ΠΌΠ΅Π½ΡΡΠ΅ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ°Π²Π΅Π½ k, ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠ²Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ½Π°ΡΠ΅, ΠΈΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎ ΠΎΡΡΠ°Π²ΡΠΈΠΌΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΡΠΌΠΌΡ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ backtrack Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΎΡΠ»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°. 3β£ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²: ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΡ combinationSum3 Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
private void Backtrack(int remain, int k, List<int> comb, int nextStart, List<IList<int>> results) {
if (remain == 0 && comb.Count == k) {
results.Add(new List<int>(comb));
return;
} else if (remain < 0 || comb.Count == k) {
return;
}
for (int i = nextStart; i < 9; i++) {
comb.Add(i + 1);
Backtrack(remain - i - 1, k, comb, i + 1, results);
comb.RemoveAt(comb.Count - 1);
}
}
public IList<IList<int>> CombinationSum3(int k, int n) {
var results = new List<IList<int>>();
var comb = new List<int>();
Backtrack(n, k, comb, 0, results);
return results;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 643. Maximum Average Subarray I
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² 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 204
ΠΠ°Π΄Π°ΡΠ°: 173. Binary Search Tree Iterator
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ BSTIterator, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΏΠΎΠΈΡΠΊΠ° (BST) Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ in-order:
BSTIterator(TreeNode root): ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° BSTIterator. ΠΠΎΡΠ΅Π½Ρ BST ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π½Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, ΠΌΠ΅Π½ΡΡΠ΅Π΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² BST.
boolean hasNext(): ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π² ΠΎΠ±Ρ
ΠΎΠ΄Π΅ ΡΠΏΡΠ°Π²Π° ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ, ΠΈΠ½Π°ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false.
int next(): ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²ΠΏΡΠ°Π²ΠΎ, Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² next() Π²Π΅ΡΠ½Π΅Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² BST.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Ρ next() Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ. Π’ΠΎ Π΅ΡΡΡ, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ next() Π² ΠΎΠ±Ρ
ΠΎΠ΄Π΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input ["BSTIterator", "next", "next", "hasNext", "next", "hasNext", "next", "hasNext", "next", "hasNext"] [[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []] Output [null, 3, 7, true, 9, true, 15, true, 20, false] Explanation BSTIterator bSTIterator = new BSTIterator([7, 3, 15, null, null, 9, 20]); bSTIterator.next(); // return 3 bSTIterator.next(); // return 7 bSTIterator.hasNext(); // return True bSTIterator.next(); // return 9 bSTIterator.hasNext(); // return True bSTIterator.next(); // return 15 bSTIterator.hasNext(); // return True bSTIterator.next(); // return 20 bSTIterator.hasNext(); // return Falseπ¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ·Π»Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. 2β£ΠΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ in-order ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½Π°Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ·Π»ΠΎΠ². ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠ·Π»Π° ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ (ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠ·Π²Π°ΡΡ) Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ, Π° ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ·Π»Π° β Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ. 3β£ΠΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π±ΡΠ΄ΡΡ Π²ΡΠ΅ ΡΠ·Π»Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
next ΠΈ hasNext. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ hasNext, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΄ΠΎΡΡΠΈΠ³ Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΠ½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ next ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ. Π’Π°ΠΊΠΆΠ΅, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ next, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π³ Π²ΠΏΠ΅ΡΠ΅Π΄, ΡΡΠΎΠ±Ρ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int x) { val = x; left = null; right = null; }
}
public class BSTIterator {
private List<int> nodesSorted;
private int index;
private void Inorder(TreeNode root) {
if (root == null) return;
Inorder(root.left);
nodesSorted.Add(root.val);
Inorder(root.right);
}
public BSTIterator(TreeNode root) {
nodesSorted = new List<int>();
index = -1;
Inorder(root);
}
public int Next() {
return nodesSorted[++index];
}
public bool HasNext() {
return index + 1 < nodesSorted.Count;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 624. Maximum Distance in Arrays
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½ΠΎ m ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ Π΄Π²Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ»Π° ΠΈΠ· Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ) ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ a ΠΈ b ΠΊΠ°ΠΊ ΠΈΡ
Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΡΠ°Π·Π½ΠΎΡΡΡ |a - b|. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: arrays = [[1,2,3],[4,5],[1,2,3]] Output: 4π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· Π²ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². 2β£Π Π°ΡΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. 3β£ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int MaxDistance(IList<IList<int>> arrays) {
int minVal = arrays[0][0];
int maxVal = arrays[0][arrays[0].Count - 1];
int maxDistance = 0;
for (int i = 1; i < arrays.Count; i++) {
maxDistance = Math.Max(maxDistance, Math.Abs(arrays[i][arrays[i].Count - 1] - minVal), Math.Abs(arrays[i][0] - maxVal));
minVal = Math.Min(minVal, arrays[i][0]);
maxVal = Math.Max(maxVal, arrays[i][arrays[i].Count - 1]);
}
return maxDistance;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 598. Range Addition II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: Easy
ΠΠ°ΠΌ Π΄Π°Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° M ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x n, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½ΡΠ»ΡΠΌΠΈ, ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ops, Π³Π΄Π΅ ops[i] = [ai, bi] ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ M[x][y] Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
0 <= x < ai ΠΈ 0 <= y < bi.
ΠΠΎΠ΄ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π» Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: m = 3, n = 3, ops = [[2,2],[3,3]] Output: 4 Explanation: The maximum integer in M is 2, and there are four of it in M. So return 4.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ M, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π½ΡΠ»ΡΠΌΠΈ, Ρ Π²Π΅ΡΡ Π½ΠΈΠΌ Π»Π΅Π²ΡΠΌ ΡΠ³Π»ΠΎΠΌ Π² ΡΠΎΡΠΊΠ΅ (0,0) ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΡΠ°Π²ΡΠΌ ΡΠ³Π»ΠΎΠΌ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ [i,j] Π² ΡΠΎΡΠΊΠ΅ (i,j). 2β£ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ» ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠ΅ΠΉΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ (x,y), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π²Π΅Π½ (min(op[0]), min(op[1])). 3β£ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ x ΠΈ y. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int MaxCount(int m, int n, int[][] ops) {
int minA = m;
int minB = n;
foreach (var op in ops) {
minA = Math.Min(minA, op[0]);
minB = Math.Min(minB, op[1]);
}
return minA * minB;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 71. Simplify Path
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΏΡΡΡ Π² ΡΡΠΈΠ»Π΅ Unix. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ»ΡΡΠΈ, .(ΡΠ΅ΠΊΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ) ΠΈ ..(Π²ΠΎΠ·Π²ΡΠ°Ρ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅).
ΠΡΠΈΠΌΠ΅Ρ:
Input: path = "/home/" Output: "/home" Explanation: The trailing slash should be removed.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π Π°Π·Π±ΠΈΡΡ ΠΏΡΡΡ /ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π΄Π΅ΡΠ°Π»Ρ: ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ .ΠΈ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ . 2β£ΠΡΠΈ ..ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΡΠ΅ΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ. 3β£ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΊΠ΅, Π·Π°ΡΠ΅ΠΌ ΡΠ±ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public string SimplifyPath(string path) {
Stack<string> stack = new Stack<string>();
string[] components = path.Split('/');
foreach (string directory in components) {
if (directory.Equals(".") || directory.Length == 0) {
continue;
} else if (directory.Equals("..")) {
if (stack.Any()) {
stack.Pop();
}
} else {
stack.Push(directory);
}
}
StringBuilder result = new StringBuilder();
foreach (string dir in stack.Reverse()) {
result.Append("/");
result.Append(dir);
}
return result.Length > 0 ? result.ToString() : "/";
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 1247. Minimum Swaps to Make Strings Equal
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°ΠΌ Π΄Π°Π½Ρ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ s1 ΠΈ s2 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π±ΡΠΊΠ² "x" ΠΈ "y". ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° - ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π²Π½ΡΠΌΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π»ΡΠ±ΡΠ΅ Π΄Π²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΡΠ°Π·Π½ΡΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ s1[i] ΠΈ s2[j]. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ², Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ s1 ΠΈ s2 ΡΠ°Π²Π½ΡΠΌΠΈ, ΠΈΠ»ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ -1, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: arr = [1,2] Output: 2π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΎΠ΄ΡΡΠ΅Ρ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ°Ρ: ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ s1 ΠΈ s2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ xy ΠΈ yx. ΠΠ°ΡΠ° xy Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° s1[i] ΡΠ°Π²Π½ΠΎ 'x', Π° s2[i] ΡΠ°Π²Π½ΠΎ 'y'. ΠΠ°ΡΠ° yx Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° s1[i] ΡΠ°Π²Π½ΠΎ 'y', Π° s2[i] ΡΠ°Π²Π½ΠΎ 'x'. 2β£ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ΡΠ½ΠΎΡΡΠΈ: ΠΡΠ»ΠΈ ΡΡΠΌΠΌΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°Ρ xy ΠΈ yx Π½Π΅ΡΠ΅ΡΠ½Π°Ρ, ΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π²Π½ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΌΠ΅Π½Π° ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΡΠΌΠΌΡ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ°Ρ Π½Π° 2. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ -1. 3β£ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΌΠ΅Π½: ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ xy ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ yx ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π΄Π²Π΅ ΠΏΠ°ΡΡ xy ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π΄Π²Π΅ ΠΏΠ°ΡΡ yx ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ ΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΌΠ΅Π½ ΡΠ°Π²Π½ΠΎ xy // 2 + yx // 2. ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ xy Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Ρ yx Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΏΠ°ΡΡ xy ΠΈ ΠΎΠ΄Π½Ρ ΠΏΠ°ΡΡ yx Π·Π° Π΄Π²Π° Ρ ΠΎΠ΄Π°. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΌΠ΅Π½ ΡΠ°Π²Π½ΠΎ xy // 2 + yx // 2 + 2. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int MinimumSwap(string s1, string s2) {
int xy = 0, yx = 0;
for (int i = 0; i < s1.Length; i++) {
if (s1[i] == 'x' && s2[i] == 'y') {
xy++;
} else if (s1[i] == 'y' && s2[i] == 'x') {
yx++;
}
}
if ((xy + yx) % 2 != 0) {
return -1;
}
return xy / 2 + yx / 2 + (xy % 2) * 2;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 1199. Minimum Time to Build Blocks
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°ΠΌ Π΄Π°Π½ ΡΠΏΠΈΡΠΎΠΊ Π±Π»ΠΎΠΊΠΎΠ², Π³Π΄Π΅ blocks[i] = t ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π° ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡΠ²ΠΎ i-Π³ΠΎ Π±Π»ΠΎΠΊΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ t Π΅Π΄ΠΈΠ½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ.
Π Π°Π±ΠΎΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈΠ±ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡΡΡ Π½Π° Π΄Π²ΡΡ
ΡΠ°Π±ΠΎΡΠΈΡ
(ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΠΈΡ
ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ), Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π±Π»ΠΎΠΊ ΠΈ ΡΠΉΡΠΈ Π΄ΠΎΠΌΠΎΠΉ. ΠΠ±Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ Π½Π° Π΄Π²ΡΡ
, Π·Π°Π΄Π°Π½ΠΎ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ split. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄Π²Π° ΡΠ°Π±ΠΎΡΠΈΡ
ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΎΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½Ρ split.
ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡΠ²Π° Π²ΡΠ΅Ρ
Π±Π»ΠΎΠΊΠΎΠ².
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π±ΠΎΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: blocks = [1,2,3], split = 1 Output: 4 Explanation: Split 1 worker into 2, then assign the first worker to the last block and split the second worker into 2. Then, use the two unassigned workers to build the first two blocks. The cost is 1 + max(3, 1 + max(1, 2)) = 4.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΡΡΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΊΡΡΡ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° blocks. 2β£ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΡΡΠΈ: ΠΠΎΠΊΠ° Π² ΠΊΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: - ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΡΡΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ x. - ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΡΡΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ y. - ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π²Π½ΠΎ split + y, ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΊΡΡΡ. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΠΎΠ³Π΄Π° Π² ΠΊΡΡΠ΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π΄Π»Ρ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡΠ²Π° Π²ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public int MinBuildTime(int[] blocks, int split) {
PriorityQueue<int, int> pq = new PriorityQueue<int, int>();
foreach (var block in blocks) {
pq.Enqueue(block, block);
}
while (pq.Count > 1) {
int x = pq.Dequeue();
int y = pq.Dequeue();
pq.Enqueue(split + y, split + y);
}
return pq.Dequeue();
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 629. K Inverse Pairs Array
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° nums ΠΈΠ½Π²Π΅ΡΡΠ½Π°Ρ ΠΏΠ°ΡΠ° - ΡΡΠΎ ΠΏΠ°ΡΠ° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» [i, j], Π³Π΄Π΅ 0 <= i < j < nums.length ΠΈ nums[i] > nums[j]. Π£ΡΠΈΡΡΠ²Π°Ρ Π΄Π²Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ»Π° n ΠΈ k, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠΎΡΡΠΎΡΡΠΈΡ
ΠΈΠ· ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ n, Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ²Π½ΠΎ k ΠΈΠ½Π²Π΅ΡΡΠ½ΡΡ
ΠΏΠ°Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 109 + 7.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 3, k = 0 Output: 1π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² dp ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ [n+1][k+1] ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ dp[0][0] = 1. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π² 0. 2β£ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ DP-ΡΠ°Π±Π»ΠΈΡΡ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π° Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ DP. ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ Π΄Π»ΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° i ΠΎΡ 1 Π΄ΠΎ n, Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ j ΠΎΡ 0 Π΄ΠΎ k. ΠΡΠ»ΠΈ j == 0, ΡΠΎ dp[i][j] = 1. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ dp[i][j] Ρ ΡΡΠ΅ΡΠΎΠΌ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² Π΄Π»ΠΈΠ½Ρ i-1. 3β£ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ dp[n][k]. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int KInversePairs(int n, int k) {
int MOD = 1000000007;
int[,] dp = new int[n + 1, k + 1];
dp[0, 0] = 1;
for (int i = 1; i <= n; i++) {
dp[i, 0] = 1;
for (int j = 1; j <= k; j++) {
dp[i, j] = (dp[i, j - 1] + dp[i - 1, j]) % MOD;
if (j >= i) {
dp[i, j] = (dp[i, j] - dp[i - 1, j - i] + MOD) % MOD;
}
}
}
return dp[n, k];
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 364. Nested List Weight Sum II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nestedList. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ.
ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΈΡΠΊΠΎΠ², Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ [1,[2,2],[[3],2],1] ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π²Π½ΡΠΌ Π΅Π³ΠΎ Π³Π»ΡΠ±ΠΈΠ½Π΅. ΠΡΡΡΡ maxDepth Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°.
ΠΠ΅Ρ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ maxDepth - (Π³Π»ΡΠ±ΠΈΠ½Π° ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°) + 1.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² nestedList, ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΡΡ Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nestedList = [[1,1],2,[1,1]] Output: 8 Explanation: Four 1's with a weight of 1, one 2 with a weight of 2. 1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ BFS-Π΄Π΅ΡΠ΅Π²Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ nestedList Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ. 2β£ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ sumOfElements, maxDepth ΠΈ sumOfProducts. 3β£ΠΠΎΠ³Π΄Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠ°Π½Π΅Ρ ΠΏΡΡΡΠΎΠΉ, Π²Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (maxDepth + 1) * sumOfElements - sumOfProducts. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public int DepthSumInverse(IList<NestedInteger> nestedList) {
var queue = new Queue<NestedInteger>(nestedList);
int depth = 1, maxDepth = 0, sumOfElements = 0, sumOfProducts = 0;
while (queue.Count > 0) {
int size = queue.Count;
maxDepth = Math.Max(maxDepth, depth);
for (int i = 0; i < size; i++) {
var nested = queue.Dequeue();
if (nested.IsInteger()) {
int value = nested.GetInteger();
sumOfElements += value;
sumOfProducts += value * depth;
} else {
foreach (var ni in nested.GetList()) queue.Enqueue(ni);
}
}
depth++;
}
return (maxDepth + 1) * sumOfElements - sumOfProducts;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 1055. Shortest Way to Form String
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠΎΠΊΠΈ - ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΡΠ΅ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
(ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ) ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΠ°Π²ΡΠΈΡ
ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "ace" ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ "abcde", Π° "aec" - Π½Π΅Ρ). ΠΡΠ»ΠΈ Π΄Π°Π½Ρ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ source ΠΈ target, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ source, ΡΡΠΎΠ±Ρ ΠΈΡ
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΡΠ»ΠΎΡΡ target. ΠΡΠ»ΠΈ Π·Π°Π΄Π°ΡΠ° Π½Π΅Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠ°, Π²Π΅ΡΠ½ΠΈΡΠ΅ -1.
ΠΡΠΈΠΌΠ΅Ρ:
Input: source = "abc", target = "abcbc"
Output: 2
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π² ΡΡΡΠΎΠΊΠ°Ρ
source ΠΈ target.
2β£ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΡΠΎΠΊΠΈ source, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² target.
ΠΡΠ»ΠΈ ΡΡ ΠΏΡΠΎΡΠ΅Π» Π²ΡΡ ΡΡΡΠΎΠΊΡ source ΠΈ Π½Π΅ Π½Π°ΡΠ΅Π» Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ target, ΡΠ²Π΅Π»ΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ Π½Π°ΡΠ½ΠΈ ΡΠ½ΠΎΠ²Π° Ρ Π½Π°ΡΠ°Π»Π° source.
3β£ΠΠΎΠ²ΡΠΎΡΠΈ ΡΠ°Π³ΠΈ 2 ΠΈ 3 Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ target.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int MinSubsequences(string source, string target) {
int subsequencesCount = 0;
int targetIndex = 0;
while (targetIndex < target.Length) {
int sourceIndex = 0;
subsequencesCount++;
int startIndex = targetIndex;
while (sourceIndex < source.Length && targetIndex < target.Length) {
if (source[sourceIndex] == target[targetIndex]) {
targetIndex++;
}
sourceIndex++;
}
if (targetIndex == startIndex) {
return -1;
}
}
return subsequencesCount;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 31. Next Permutation
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» β ΡΡΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° β ΡΡΠΎ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,2,3] Output: [1,3,2]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΠΉΡΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ (
nums[i] < nums[i+1]).
2β£ΠΠ°ΠΉΡΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»ΡΡΠ΅ nums[i], ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΈΡ
ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
3β£ΠΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΡΠ»Π΅ i Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public void NextPermutation(int[] nums) {
int i = nums.Length - 2;
while (i >= 0 && nums[i + 1] <= nums[i]) i--;
if (i >= 0) {
int j = nums.Length - 1;
while (nums[j] <= nums[i]) j--;
Swap(nums, i, j);
}
Reverse(nums, i + 1);
}
private void Reverse(int[] nums, int start) {
int i = start, j = nums.Length - 1;
while (i < j) Swap(nums, i++, j--);
}
private void Swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 27. Remove Element
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ val, ΡΠ΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ val Π² nums Π½Π° ΠΌΠ΅ΡΡΠ΅. ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. ΠΠ°ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π²Π½Ρ val.
Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² nums, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°Π²Π½Ρ val be k. Π§ΡΠΎΠ±Ρ Π²Π°Ρ ΠΏΡΠΈΠ½ΡΠ»ΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² nums ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ k ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² nums ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½Π΅ ΡΠ°Π²Π½ΡΠ΅ val. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ nums Π½Π΅ Π²Π°ΠΆΠ½Ρ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ nums.
- ΠΠ΅ΡΠ½ΡΡΡ k.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [3,2,2,3], val = 3 Output: 2π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
i Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ ΡΠ°Π²Π½ΡΡ
val.
2β£ΠΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ² nums, ΠΊΠΎΠΏΠΈΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ val, Π½Π° ΠΌΠ΅ΡΡΠΎ i, Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ i.
3β£ΠΠ΅ΡΠ½ΡΡΡ i ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠ°Π²ΡΠΈΡ
ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int RemoveElement(int[] nums, int val) {
int i = 0;
for (int j = 0; j < nums.Length; j++) {
if (nums[j] != val) {
nums[i++] = nums[j];
}
}
return i;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 775. Global and Local Inversions
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nums Π΄Π»ΠΈΠ½ΠΎΠΉ n, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ
ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0, n - 1].
Π§ΠΈΡΠ»ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠ°Ρ (i, j), Π³Π΄Π΅:
0 <= i < j < n
nums[i] > nums[j]
Π§ΠΈΡΠ»ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² i, Π³Π΄Π΅:
0 <= i < n - 1
nums[i] > nums[i + 1]
ΠΠ΅ΡΠ½ΠΈΡΠ΅ true, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,0,2]
Output: true
Explanation: There is 1 global inversion and 1 local inversion.
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΠ΅ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ (A[i] > A[j], i < j) Ρ j - i > 1.
2β£ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ i ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ j, ΡΠ°ΠΊΠΎΠΉ ΡΡΠΎ j > i + 1 ΠΈ nums[i] > nums[j]. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π°ΠΉΠ΄Π΅Π½, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ.
3β£ΠΡΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² i ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΡΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈΠ½Π²Π΅ΡΡΠΈΠΉ, ΠΈ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ true. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ false.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public bool IsIdealPermutation(int[] A) {
int N = A.Length;
for (int i = 0; i < N; ++i)
for (int j = i + 2; j < N; ++j)
if (A[i] > A[j]) return false;
return true;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 322. Coin Change
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² coins, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΌΠΎΠ½Π΅ΡΡ ΡΠ°Π·Π½ΡΡ
Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠ², ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ amount, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π΄Π΅Π½Π΅Π³.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ½Π΅Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠΌΠΌΡ. ΠΡΠ»ΠΈ ΡΡΡ ΡΡΠΌΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΌΠΎΠ½Π΅Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ -1.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ½Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: coins = [1,2,5], amount = 11 Output: 3 Explanation: 11 = 5 + 5 + 1π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ backtracking ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ½Π΅Ρ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ backtracking Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. 2β£Π€ΡΠ½ΠΊΡΠΈΡ backtracking ΠΠ½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ backtracking Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ½Π΅ΡΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° coins: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ½Π΅Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»Π° (ΠΎΡ 0 Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ amount). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΌΠΎΠ½Π΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΡΠΌΠΌΡ. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡ ΡΡΠΌΠΌΡ ΠΌΠΎΠ½Π΅Ρ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ½Π΅Ρ. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ, Π΄Π°ΡΡΠ°Ρ ΡΡΠΌΠΌΡ amount, Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ½Π΅Ρ, ΠΈΠ½Π°ΡΠ΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ -1. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int CoinChange(int[] coins, int amount) {
return CoinChange(0, coins, amount);
}
private int CoinChange(int idxCoin, int[] coins, int amount) {
if (amount == 0) return 0;
if (idxCoin < coins.Length && amount > 0) {
int maxVal = amount / coins[idxCoin];
int minCost = int.MaxValue;
for (int x = 0; x <= maxVal; x++) {
if (amount >= x * coins[idxCoin]) {
int res = CoinChange(idxCoin + 1, coins, amount - x * coins[idxCoin]);
if (res != -1)
minCost = Math.Min(minCost, res + x);
}
}
return minCost == int.MaxValue ? -1 : minCost;
}
return -1;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
ΠΠ°Π΄Π°ΡΠ°: 328. Odd Even Linked List
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π‘Π³ΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ΡΠ·Π»Ρ Ρ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ·Π»Ρ Ρ ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ·Π΅Π» ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ, Π²ΡΠΎΡΠΎΠΉ ΡΠ·Π΅Π» β ΡΠ΅ΡΠ½ΡΠΌ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²Π½ΡΡΡΠΈ ΠΎΠ±Π΅ΠΈΡ
Π³ΡΡΠΏΠΏ (ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ O(1) ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(n).
ΠΡΠΈΠΌΠ΅Ρ:
Input: head = [2,1,3,5,6,4,7] Output: [2,3,6,7,1,5,4]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ: Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ odd ΠΈ even Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΈ ΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ odd Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° head, Π° even β ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ·Π»ΠΎΠΌ head.next. Π’Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ evenHead Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. 2β£Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΊΠ» Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°, ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ Π² oddList, Π° ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ Π² evenList. ΠΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ odd ΠΈ even Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ. 3β£Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ²: ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½Π΅Ρ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ evenHead. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
public class Solution {
public ListNode OddEvenList(ListNode head) {
if (head == null) return null;
ListNode odd = head, even = head.next, evenHead = even;
while (even != null && even.next != null) {
odd.next = even.next;
odd = odd.next;
even.next = odd.next;
even = even.next;
}
odd.next = evenHead;
return head;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 204
πΊ Π£Π½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π±Π°Π·Π° IT ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ
456+ ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΎΡΠΈΠ΅ IT ΠΏΡΠΎΡΡ.
ΠΡΡΡ ΡΠΎΠ±Π΅ΡΡ ΠΎΡ Π²Π΅Π΄ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ: Π‘Π±Π΅Ρ, Π―Π½Π΄Π΅ΠΊΡ, ΠΠ’Π, Π’ΠΈΠ½ΡΠΊΠΎΡΡ, ΠΠ·ΠΎΠ½, Wildberries ΠΈ Ρ.Π΄.
π― ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ ΠΊ Π±Π°Π·Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π½ΡΡ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ!
3 204
ΠΠ°Π΄Π°ΡΠ°: 240. Search a 2D Matrix II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ target Π² ΠΌΠ°ΡΡΠΈΡΠ΅ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m Π½Π° n. Π£ ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
Π¦Π΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ.
Π¦Π΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠ²Π΅ΡΡ
Ρ Π²Π½ΠΈΠ·.
ΠΡΠΈΠΌΠ΅Ρ:
Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5 Output: trueπ¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ°ΡΡΠΈΡΡ: ΠΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° Π½Π΅ ΠΏΡΡΡΠ° ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ null. 2β£ΠΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠΌ: ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠΌ ΠΌΠ°ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ ΡΡΠ΅Π·ΠΎΠ² ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (ΡΡΡΠΎΠΊΠ°, ΡΡΠΎΠ»Π±Π΅Ρ). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. 3β£ΠΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅: ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π΅ΡΠ΅ Π²ΡΠ΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ False) ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ True). Π€ΡΠ½ΠΊΡΠΈΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΡΡΠ΄Π°ΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΡ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
private bool BinarySearch(int[,] matrix, int target, int start, bool vertical) {
int lo = start;
int hi = vertical ? matrix.GetLength(1) - 1 : matrix.GetLength(0) - 1;
while (hi >= lo) {
int mid = (lo + hi) / 2;
int value = vertical ? matrix[start, mid] : matrix[mid, start];
if (value < target) {
lo = mid + 1;
} else if (value > target) {
hi = mid - 1;
} else {
return true;
}
}
return false;
}
public bool SearchMatrix(int[,] matrix, int target) {
if (matrix == null || matrix.Length == 0) return false;
int shorterDim = Math.Min(matrix.GetLength(0), matrix.GetLength(1));
for (int i = 0; i < shorterDim; i++) {
if (BinarySearch(matrix, target, i, true) || BinarySearch(matrix, target, i, false)) {
return true;
}
}
return false;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ