C# | LeetCode
Kanalga Telegramβda oβtish
Π‘Π°ΠΉΡ: https://easyoffer.ru/ ΠΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ: t.me/+xGeAw6ckJ4liYzQy ΠΠΎΠ½ΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: @sendme_ads
Ko'proq ko'rsatish3 163
Obunachilar
-224 soatlar
-127 kun
-2830 kun
Postlar arxiv
3 163
ΠΠ°Π΄Π°ΡΠ°: 1376. Time Needed to Inform All Employees
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ n ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΡ 0 Π΄ΠΎ n - 1. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ headID.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΈΠΊ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ manager, Π³Π΄Π΅ manager[i] β ΡΡΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΈΠΊ i-Π³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°, manager[headID] = -1. Π’Π°ΠΊΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ
ΠΎΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π²ΡΠ΅ΠΌ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΡΠΎΡΠ½ΡΡ Π½ΠΎΠ²ΠΎΡΡΡ. ΠΠ½ ΡΠΎΠΎΠ±ΡΠΈΡ ΡΠ²ΠΎΠΈΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠΌ, Π° ΠΎΠ½ΠΈ ΡΠΎΠΎΠ±ΡΠ°Ρ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠΌ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° Π²ΡΠ΅ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ Π½Π΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΡΠΎΡΠ½ΠΎΠΉ Π½ΠΎΠ²ΠΎΡΡΠΈ.
i-ΠΉ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² informTime[i] ΠΌΠΈΠ½ΡΡΠ°Ρ
, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΈΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠΌ (Ρ.Π΅. ΡΠ΅ΡΠ΅Π· informTime[i] ΠΌΠΈΠ½ΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΠ°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ Π½ΠΎΠ²ΠΎΡΡΡ).
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ½ΡΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π²ΡΠ΅ΠΌ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌ ΠΎ ΡΡΠΎΡΠ½ΠΎΠΉ Π½ΠΎΠ²ΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: n = 6, headID = 2, manager = [2,2,-1,2,2,2], informTime = [0,0,1,0,0,0] Output: 1 Explanation: The head of the company with id = 2 is the direct manager of all the employees in the company and needs 1 minute to inform them all. The tree structure of the employees in the company is shown.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠΌΠ΅ΠΆΠ½ΠΎΡΡΠΈ adjList; ΠΈΠ½Π΄Π΅ΠΊΡ i Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ ΡΠ·Π»Ρ Π΄Π»Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ i. 2β£ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌ ΠΎΡ 0 Π΄ΠΎ N - 1, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° i Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΡΠ΅Π±ΡΠΎ manager[i] -> i, Π΅ΡΠ»ΠΈ manager[i] Π½Π΅ ΡΠ°Π²Π΅Π½ -1. 3β£ΠΠ°ΡΠ½ΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ DFS Ρ ΡΠ·Π»Π° headID ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ 0 Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΊΠ°ΠΊ curr. ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ maxTime, ΡΡΠ°Π²Π½ΠΈΠ² Π΅Π³ΠΎ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΡΠΌΠ΅ΠΆΠ½ΡΠΌ ΡΠ·Π»Π°ΠΌ curr ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΌΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ DFS Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ time + informTime[curr]. ΠΠΎΠ³Π΄Π° DFS Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π²Π΅ΡΠ½ΠΈΡΠ΅ maxTime. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
private int maxTime = int.MinValue;
private void DFS(List<int>[] adjList, int[] informTime, int curr, int time) {
maxTime = Math.Max(maxTime, time);
foreach (int adjacent in adjList[curr]) {
DFS(adjList, informTime, adjacent, time + informTime[curr]);
}
}
public int NumOfMinutes(int n, int headID, int[] manager, int[] informTime) {
List<int>[] adjList = new List<int>[n];
for (int i = 0; i < n; i++) {
adjList[i] = new List<int>();
}
for (int i = 0; i < n; i++) {
if (manager[i] != -1) {
adjList[manager[i]].Add(i);
}
}
DFS(adjList, informTime, headID, 0);
return maxTime;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 162. Find Peak Element
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠΈΠΊΠΎΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ²ΠΎΠΈΡ
ΡΠΎΡΠ΅Π΄Π΅ΠΉ.
ΠΠ»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nums Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ Ρ Π½ΡΠ»Ρ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΈΠΊΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΡΠ»ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΠΎΠ², Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΈΠΊΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ nums[-1] = nums[n] = -β. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ΅ΠΌ ΡΠΎΡΠ΅Π΄, Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π° Π²ΡΠ΅ΠΌΡ O(log n).
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,2,3,1] Output: 2 Explanation: 3 is a peak element and your function should return the index number 2.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°: ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° mid ΠΊΠ°ΠΊ mid = low + (high - low) / 2. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². 2β£ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°: Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ nums[mid] Ρ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΡΠΌ ΡΠΎΡΠ΅Π΄ΠΎΠΌ nums[mid + 1]. ΠΡΠ»ΠΈ nums[mid] ΠΌΠ΅Π½ΡΡΠ΅ nums[mid + 1], ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΈ ΠΌΡ Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡΡ Π²ΠΏΡΠ°Π²ΠΎ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ low = mid + 1. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΈΠΊ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ. ΠΡΠ»ΠΈ nums[mid] Π±ΠΎΠ»ΡΡΠ΅ nums[mid + 1], ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΈ ΠΏΠΈΠΊ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈΠ±ΠΎ Π² mid, Π»ΠΈΠ±ΠΎ ΡΠ»Π΅Π²Π° ΠΎΡ Π½Π΅Π³ΠΎ, ΡΠΎΠ³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ high = mid. 3β£ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠ°: ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° low Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ high, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΈΠΊΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int FindPeakElement(int[] nums) {
return Search(nums, 0, nums.Length - 1);
}
public int Search(int[] nums, int l, int r) {
if (l == r)
return l;
int mid = (l + r) / 2;
if (nums[mid] > nums[mid + 1])
return Search(nums, l, mid);
return Search(nums, mid + 1, r);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 1426. Counting Elements
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² arr, ΠΏΠΎΡΡΠΈΡΠ°ΠΉΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² x Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΡΠ°ΠΊΠΈΡ
, ΡΡΠΎ x + 1 ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² arr. ΠΡΠ»ΠΈ Π² arr Π΅ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ, ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈΡ
ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: arr = [1,2,3] Output: 2 Explanation: 1 and 2 are counted cause 2 and 3 are in arr.π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. 2β£ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ x + 1 Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. 3β£Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ, Π΅ΡΠ»ΠΈ x + 1 Π½Π°ΠΉΠ΄Π΅Π½, ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int CountElements(int[] arr) {
int count = 0;
foreach (int x in arr) {
if (IntegerInArray(arr, x + 1)) {
count++;
}
}
return count;
}
public bool IntegerInArray(int[] arr, int target) {
foreach (int x in arr) {
if (x == target) {
return true;
}
}
return false;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 1016. Binary String With Substrings Representing 1 To N
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° s ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n, Π²Π΅ΡΠ½ΠΈΡΠ΅ true, Π΅ΡΠ»ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [1, n] ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΎΠΉ s, ΠΈΠ»ΠΈ false Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠΎΠ΄ΡΡΡΠΎΠΊΠ° - ΡΡΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "0110", n = 3 Output: trueπ¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊ: ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [1, n] ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. 2β£ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΈ s. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ΠΡΠ»ΠΈ Π²ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΡΡΠΎΠΊΠΈ s, Π²Π΅ΡΠ½ΠΈΡΠ΅ true. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²Π΅ΡΠ½ΠΈΡΠ΅ false. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public bool QueryString(string s, int n) {
for (int i = 1; i <= n; i++) {
string binary = Convert.ToString(i, 2);
if (!s.Contains(binary)) {
return false;
}
}
return true;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
πΊ ΠΠ°Π·Π° 1000+ ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ
ΠΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°, ΠΏΡΠΎΠ΄ΠΆΠ΅ΠΊΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ IT ΠΏΡΠΎΡΡ.
ΠΡΡΡ ΡΠΎΠ±Π΅ΡΡ ΠΎΡ Π²Π΅Π΄ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ: Π‘Π±Π΅Ρ, Π―Π½Π΄Π΅ΠΊΡ, ΠΠ’Π, Π’ΠΈΠ½ΡΠΊΠΎΡΡ, ΠΠ·ΠΎΠ½, Wildberries ΠΈ Ρ.Π΄.
π― ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΡ ΠΊ Π±Π°Π·Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π½ΡΡ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ!
3 163
#medium
ΠΠ°Π΄Π°ΡΠ°: 311. Sparse Matrix Multiplication
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½Ρ Π΄Π²Π΅ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ mat1 ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x k ΠΈ mat2 ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ k x n. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ mat1 x mat2. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: mat1 = [[1,0,0],[-1,0,3]], mat2 = [[7,0,0],[0,0,0],[0,0,1]]
Output: [[7,0,0],[-7,0,3]]
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΡΡ
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ result ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ m x n, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ Π½ΡΠ»ΡΠΌΠΈ.
2β£Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΠ°ΡΡΠΈΡΡ mat1 ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Ρ
Π΅Ρ-ΠΊΠ°ΡΡΠ΅ mat1_map. ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΠΌΠ°ΡΡΠΈΡΡ mat2 ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Ρ
Π΅Ρ-ΠΊΠ°ΡΡΠ΅ mat2_map.
3β£ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ i Π² mat1 ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ j Π² mat2: ΠΡΠ»ΠΈ Π² mat1_map Π΅ΡΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΡΠΎΠΊΠ΅ i ΠΈ Π² mat2_map Π΅ΡΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ j Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ k, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ result[i][j].
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int[][] Multiply(int[][] mat1, int[][] mat2) {
int n = mat1.Length;
int k = mat1[0].Length;
int m = mat2[0].Length;
int[][] ans = new int[n][];
for (int i = 0; i < n; i++) {
ans[i] = new int[m];
}
for (int rowIndex = 0; rowIndex < n; rowIndex++) {
for (int elementIndex = 0; elementIndex < k; elementIndex++) {
if (mat1[rowIndex][elementIndex] != 0) {
for (int colIndex = 0; colIndex < m; colIndex++) {
ans[rowIndex][colIndex] += mat1[rowIndex][elementIndex] * mat2[elementIndex][colIndex];
}
}
}
}
return ans;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 616. Add Bold Tag in String
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°ΠΌ Π΄Π°Π½Π° ΡΡΡΠΎΠΊΠ° s ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ words. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°ΠΊΡΡΡΡΡ ΠΏΠ°ΡΡ ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΡ
ΡΠ΅Π³ΠΎΠ² <b> ΠΈ </b>, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ Π² s, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² words. ΠΡΠ»ΠΈ Π΄Π²Π΅ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΈΡ
Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ Π·Π°ΠΊΡΡΡΡΡ
ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΡ
ΡΠ΅Π³ΠΎΠ². ΠΡΠ»ΠΈ Π΄Π²Π΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±Π΅ΡΠ½ΡΡΡΠ΅ ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Π³Π°ΠΌΠΈ, ΠΈΠ΄ΡΡ ΠΏΠΎΠ΄ΡΡΠ΄, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ
. ΠΠ΅ΡΠ½ΠΈΡΠ΅ s ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΡ
ΡΠ΅Π³ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "abcxyz123", words = ["abc","123"] Output: "<b>abc</b>xyz<b>123</b>"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊ ΠΈΠ· words Π² ΡΡΡΠΎΠΊΡ s ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΡΠ΅ ΡΡΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³Π°ΠΌΠΈ <b> ΠΈ </b>. 2β£ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π² ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈ, ΡΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΠ΅ΡΡ ΠΈ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ. 3β£ΠΠΎΡΡΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ s, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠ΅Π³ΠΈ <b> ΠΈ </b> Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public string AddBoldTag(string s, string[] words) {
int n = s.Length;
bool[] bold = new bool[n];
foreach (var word in words) {
int start = s.IndexOf(word);
while (start != -1) {
for (int i = start; i < start + word.Length; i++) {
bold[i] = true;
}
start = s.IndexOf(word, start + 1);
}
}
var result = new StringBuilder();
int j = 0;
while (j < n) {
if (bold[j]) {
result.Append("<b>");
while (j < n && bold[j]) {
result.Append(s[j]);
j++;
}
result.Append("</b>");
} else {
result.Append(s[j]);
j++;
}
}
return result.ToString();
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 974. Subarray Sums Divisible by K
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΏΡΡΡΡΡ
ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΡΡ
Π΄Π΅Π»ΠΈΡΡΡ Π½Π° k.
ΠΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ² β ΡΡΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [4,5,0,-2,-3,1], k = 5 Output: 7 Explanation: There are 7 subarrays with a sum divisible by k = 5: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ prefixMod = 0 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ ΡΡΠΌΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΡΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° k. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ result = 0 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° k. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² modGroups Π΄Π»ΠΈΠ½ΠΎΠΉ k, Π³Π΄Π΅ modGroups[R] Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΠΎΡΡΠ°ΡΠΊΠΎΠΌ R. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ modGroups[0] = 1. 2β£ΠΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° nums Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π½ΠΎΠ²ΡΠΉ prefixMod ΠΊΠ°ΠΊ (prefixMod + nums[i] % k + k) % k, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ result Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ modGroups[prefixMod], ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΎΡΡΠ°ΡΠΊΠΎΠΌ. Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ modGroups[prefixMod] Π½Π° 1 Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ. 3β£ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ result, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° k. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int SubarraysDivByK(int[] nums, int k) {
int prefixMod = 0, result = 0;
int[] modGroups = new int[k];
modGroups[0] = 1;
foreach (int num in nums) {
prefixMod = (prefixMod + num % k + k) % k;
result += modGroups[prefixMod];
modGroups[prefixMod]++;
}
return result;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 141. Linked List Cycle
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ head, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΊΠ».
Π¦ΠΈΠΊΠ» Π² ΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ·Π΅Π» Π² ΡΠΏΠΈΡΠΊΠ΅, Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠ½ΠΎΠ²Π°, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡ ΠΏΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ next. ΠΠ½ΡΡΡΠ΅Π½Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ pos ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ·Π»Π°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ next ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ·Π»Π°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ pos Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ true, Π΅ΡΠ»ΠΈ Π² ΡΠ²ΡΠ·Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π΅ΡΡΡ ΡΠΈΠΊΠ». Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ false.
ΠΡΠΈΠΌΠ΅Ρ:
Input: head = [3,2,0,-4], pos = 1 Output: true Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ : Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ (ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ) Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ·Π»Ρ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΡΠ΅ ΡΠ·Π»Ρ. 2β£ΠΠ±Ρ ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ°: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ΡΡ ΠΏΠΎ ΡΠ²ΡΠ·Π½ΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π³ΠΎΠ»ΠΎΠ²Ρ (head), ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. 3β£ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΊΠ»: ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ·Π΅Π» ΡΠ°Π²Π΅Π½ null, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ ΠΊΠΎΠ½ΡΠ° ΡΠΏΠΈΡΠΊΠ°, ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΊΠ»ΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠ½ΠΈΡΠ΅ false. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ·Π΅Π» ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π²Π΅ΡΠ½ΡΠ»ΠΈΡΡ ΠΊ ΡΠ°Π½Π΅Π΅ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΠΎΠΌΡ ΡΠ·Π»Ρ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΊΠ». ΠΠ΅ΡΠ½ΠΈΡΠ΅ true. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ·Π΅Π» Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ°. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public bool HasCycle(ListNode head) {
HashSet<ListNode> nodesSeen = new HashSet<ListNode>();
ListNode current = head;
while (current != null) {
if (nodesSeen.Contains(current)) {
return true;
}
nodesSeen.Add(current);
current = current.next;
}
return false;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 1074. Number of Submatrices That Sum to Target
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΠ°Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΏΡΡΡΡΡ
ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡ, ΡΡΠΌΠΌΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°Π²Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΠ° x1, y1, x2, y2 β ΡΡΠΎ Π½Π°Π±ΠΎΡ Π²ΡΠ΅Ρ
ΡΡΠ΅Π΅ΠΊ matrix[x][y] Ρ x1 <= x <= x2 ΠΈ y1 <= y <= y2.
ΠΠ²Π΅ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΡΡ (x1, y1, x2, y2) ΠΈ (x1', y1', x2', y2') ΡΠ°Π·Π»ΠΈΡΠ½Ρ, Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ
Π΅ΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΠ°ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ x1 != x1'.
ΠΡΠΈΠΌΠ΅Ρ:
Input: matrix = [[0,1,0],[1,1,1],[0,1,0]], target = 0
Output: 4
Explanation: The four 1x1 submatrices that only contain 0.
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: count = 0. ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ: r = len(matrix) ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ²: c = len(matrix[0]). ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ ps, Π²ΡΠ΄Π΅Π»ΠΈΠ² Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ»Π±Π΅Ρ Π΄Π»Ρ Π½ΡΠ»Π΅Π²ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
2β£ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ: r1 ΠΎΡ 1 Π΄ΠΎ r ΠΈ r2 ΠΎΡ r1 Π΄ΠΎ r. ΠΠ½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ Π»Π΅Π²ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ ΡΡΡΠΎΠΊ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ
ΡΡΠΌΠΌ. ΠΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΎΡ 1 Π΄ΠΎ c + 1, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ 1D curr_sum ΠΈ ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ count Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΈΡ, ΡΡΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΡΡ
ΡΠ°Π²Π½Π° target.
3β£ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΡΡΠΌΠΌΡ 1D Π² Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΠ³Π΄Π° Π²ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ count.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int NumSubmatrixSumTarget(int[][] matrix, int target) {
int r = matrix.Length, c = matrix[0].Length;
int[,] ps = new int[r + 1, c + 1];
for (int i = 1; i <= r; ++i) {
for (int j = 1; j <= c; ++j) {
ps[i, j] = ps[i - 1, j] + ps[i, j - 1] - ps[i - 1, j - 1] + matrix[i - 1][j - 1];
}
}
int count = 0;
for (int r1 = 1; r1 <= r; ++r1) {
for (int r2 = r1; r2 <= r; ++r2) {
Dictionary<int, int> h = new Dictionary<int, int>();
h[0] = 1;
for (int col = 1; col <= c; ++col) {
int currSum = ps[r2, col] - ps[r1 - 1, col];
if (h.ContainsKey(currSum - target)) {
count += h[currSum - target];
}
if (h.ContainsKey(currSum)) {
h[currSum]++;
} else {
h[currSum] = 1;
}
}
}
}
return count;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 1416. Restore The Array
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: hard
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π». ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π±ΡΠ»Π° Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ, ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° ΡΠΈΡΡ s, ΠΈ Π²ΡΡ, ΡΡΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΡΠ»ΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [1, k] ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ Π²Π΅Π΄ΡΡΠΈΡ
Π½ΡΠ»Π΅ΠΉ.
Π£ΡΠΈΡΡΠ²Π°Ρ ΡΡΡΠΎΠΊΡ s ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ k, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Ρ ΠΊΠ°ΠΊ s Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 10^9 + 7.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "1000", k = 10000 Output: 1 Explanation: The only possible array is [1000]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² dp ΡΠ°Π·ΠΌΠ΅ΡΠ° m + 1, ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ dfs(x). 2β£ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ dfs(start), Π΅ΡΠ»ΠΈ dp[start] Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ, Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π°ΡΠ΅: ΠΡΠ»ΠΈ s[start] == 0, Π²Π΅ΡΠ½ΡΡΡ 0. ΠΡΠ»ΠΈ start = m, Π²Π΅ΡΠ½ΡΡΡ 1. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ count = 0, ΡΡΠΎΠ±Ρ ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ end, ΠΈ Π΅ΡΠ»ΠΈ s[start ~ end] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² dfs(end + 1) ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ count ΠΊΠ°ΠΊ count += dfs(end + 1). ΠΠ±Π½ΠΎΠ²ΠΈΡΡ dp[start] Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ dfs(start). 3β£ΠΠ΅ΡΠ½ΡΡΡ dfs(0). π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
private int mod = 1_000_000_007;
private int Dfs(int[] dp, int start, string s, int k) {
if (dp[start] != 0) return dp[start];
if (start == s.Length) return 1;
if (s[start] == '0') return 0;
long count = 0;
for (int end = start; end < s.Length; ++end) {
string currNumber = s.Substring(start, end - start + 1);
if (long.Parse(currNumber) > k) break;
count = (count + Dfs(dp, end + 1, s, k)) % mod;
}
dp[start] = (int)count;
return (int)count;
}
public int NumberOfArrays(string s, int k) {
int[] dp = new int[s.Length + 1];
return Dfs(dp, 0, s, k);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 167. Two Sum II - Input Array Is Sorted
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» numbers, ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ 1, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Π² Π½Π΅ΡΠ±ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π΄Π²Π° ΡΠΈΡΠ»Π° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡ
ΡΡΠΌΠΌΠ° ΡΠΎΡΡΠ°Π²Π»ΡΠ»Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡΡΡΡ ΡΡΠΈ Π΄Π²Π° ΡΠΈΡΠ»Π° Π±ΡΠ΄ΡΡ numbers[index1] ΠΈ numbers[index2], Π³Π΄Π΅ 1 <= index1 < index2 <= numbers.length.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΡΠΈΡ
Π΄Π²ΡΡ
ΡΠΈΡΠ΅Π», index1 ΠΈ index2, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½, Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· Π΄Π²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² [index1, index2].
Π’Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π²Π°ΠΆΠ΄Ρ.
ΠΠ°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2].π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ: ΠΎΠ΄ΠΈΠ½ (left) Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½Π°ΡΠ°Π»Π° ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Π΄ΡΡΠ³ΠΎΠΉ (right) - Ρ ΠΊΠΎΠ½ΡΠ°. 2β£ΠΠΎΠΈΡΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ: Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ left ΠΈ right, Ρ ΡΠ΅Π»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ target. ΠΡΠ»ΠΈ ΡΡΠΌΠΌΠ° ΡΠ°Π²Π½Π° target, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΡΠΌΠΌΠ° ΠΌΠ΅Π½ΡΡΠ΅ target, ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ left (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ left ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΡΠΌΠΌΡ). ΠΡΠ»ΠΈ ΡΡΠΌΠΌΠ° Π±ΠΎΠ»ΡΡΠ΅ target, ΡΠΌΠ΅Π½ΡΡΠΈΡΠ΅ right (ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΡΠΌΠΌΡ). 3β£ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ left ΠΈ right, ΠΏΠΎΠ²ΡΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΠΉΠ΄Π΅Ρ ΠΎΡΠ²Π΅Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int[] TwoSum(int[] numbers, int target) {
int low = 0;
int high = numbers.Length - 1;
while (low < high) {
int sum = numbers[low] + numbers[high];
if (sum == target) {
return new int[] { low + 1, high + 1 };
} else if (sum < target) {
++low;
} else {
--high;
}
}
return new int[] { -1, -1 };
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 856. Score of Parentheses
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½Π° ΡΡΡΠΎΠΊΠ° s, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΡ ΡΡΡΠΎΠΊΠΈ.
Π‘ΡΡΡ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ
:
"()" ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡ 1.
AB ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡ A + B, Π³Π΄Π΅ A ΠΈ B β ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ.
(A) ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡ 2 * A, Π³Π΄Π΅ A β ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΊΠΎΠ±ΠΎΠΊ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: s = "()"
Output: 1
π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
1β£ΠΠ°Π·ΠΎΠ²ΡΠΌ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π΅Ρ Π½Π΅Π»ΡΠ·Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ Π½Π΅ΠΏΡΡΡΡΠ΅ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
2β£ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ Π±Π°Π»Π°Π½Ρ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΡ
ΡΠΊΠΎΠ±ΠΎΠΊ ΠΌΠΈΠ½ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΡ
ΡΠΊΠΎΠ±ΠΎΠΊ), ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡΠΎΠΊΡ S Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ S = P_1 + P_2 + ... + P_n. Π’ΠΎΠ³Π΄Π°, ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, score(S) = score(P_1) + score(P_2) + ... + score(P_n).
3β£ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ (S[i], S[i+1], ..., S[k]), Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ ΡΠ°Π²Π½Π° 2, ΡΠΎ Π΅Ρ ΡΡΡΡ ΡΠ°Π²Π΅Π½ 1. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΡΡ ΡΠ°Π²Π΅Π½ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΡΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ (S[i+1], S[i+2], ..., S[k-1]).
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int ScoreOfParentheses(string S) {
return F(S, 0, S.Length);
}
private int F(string S, int i, int j) {
int ans = 0, bal = 0;
for (int k = i; k < j; ++k) {
bal += S[k] == '(' ? 1 : -1;
if (bal == 0) {
if (k - i == 1) ans++;
else ans += 2 * F(S, i + 1, k);
i = k + 1;
}
}
return ans;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 136. Single Number
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΠ°Π½ Π½Π΅ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nums, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΡΠΎΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [2,2,1] Output: 1π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ΅ΡΠ΅Π±Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ nums. 2β£ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΈΡΠ»ΠΎ Π² nums Π½ΠΎΠ²ΠΎΠ΅ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ. 3β£ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠΆΠ΅ Π΅ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΡΠ΄Π°Π»ΠΈΡΠ΅ Π΅Π³ΠΎ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int SingleNumber(int[] nums) {
List<int> no_duplicate_list = new List<int>();
foreach (int i in nums) {
if (!no_duplicate_list.Contains(i)) {
no_duplicate_list.Add(i);
} else {
no_duplicate_list.Remove(i);
}
}
return no_duplicate_list[0];
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 1272. Remove Interval
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ
ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ², Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ [a, b). ΠΠ΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ x Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ² [a, b) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ x (ΡΠΎ Π΅ΡΡΡ a <= x < b). ΠΠ°ΠΌ Π΄Π°Π½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ
ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΠ΅Π», ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅, Π³Π΄Π΅ intervals[i] = [ai, bi] ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» [ai, bi). ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» toBeRemoved. ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π½Π°Π±ΠΎΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΠ΅Π» Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ toBeRemoved, ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΠΈΠ· intervals. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Π΅ΡΠ½ΠΈΡΠ΅ Π½Π°Π±ΠΎΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΠ΅Π», ΠΊΠ°ΠΆΠ΄ΡΠΉ x Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅, Π½ΠΎ Π½Π΅ Π² toBeRemoved. ΠΠ°ΡΠΈΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ
ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ², ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
Input: intervals = [[0,2],[3,4],[5,7]], toBeRemoved = [1,6] Output: [[0,1],[6,7]]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΡΠ΅ΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ intervals. 2β£ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°, ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ toBeRemoved ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². 3β£ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π½Π΅ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ°ΡΡΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
using System;
using System.Collections.Generic;
public class Solution {
public IList<IList<double>> RemoveInterval(IList<IList<double>> intervals, IList<double> toBeRemoved) {
var result = new List<IList<double>>();
foreach (var interval in intervals) {
if (interval[0] < toBeRemoved[0]) {
result.Add(new List<double> { interval[0], Math.Min(interval[1], toBeRemoved[0]) });
}
if (interval[1] > toBeRemoved[1]) {
result.Add(new List<double> { Math.Max(interval[0], toBeRemoved[1]), interval[1] });
}
}
return result;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 413. Arithmetic Slices
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠΎΡΡΠΎΠΈΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ ΠΈΠ· ΡΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π΅ΡΠ»ΠΈ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, [1,3,5,7,9], [7,7,7] ΠΈ [3,-1,-5,-9] ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ. ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² nums, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° nums. ΠΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ² - ΡΡΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [1,2,3,4] Output: 3π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ: Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². 2β£ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ Π΄Π°, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΠΉΡΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠ±ΡΠ°ΡΡΠ²Π°ΠΉΡΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. 3β£Π‘ΡΠΌΠΌΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»ΠΈΠ½Ρ len, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ°Π²Π½ΠΎ (len - 2). π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int NumberOfArithmeticSlices(int[] nums) {
if (nums.Length < 3) return 0;
int count = 0;
int currentLength = 0;
for (int i = 2; i < nums.Length; i++) {
if (nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]) {
currentLength++;
count += currentLength;
} else {
currentLength = 0;
}
}
return count;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 922. Sort Array By Parity II
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: medium
ΠΠ°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» nums, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» Π² Π½Π΅ΠΌ Π½Π΅ΡΠ΅ΡΠ½ΡΠ΅, Π° Π΄ΡΡΠ³Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° - ΡΠ΅ΡΠ½ΡΠ΅. ΠΡΡΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΠΎ Π²ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° nums[i] Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ, i Π±ΡΠ» Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ, Π° Π²ΠΎ Π²ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° nums[i] ΡΠ΅ΡΠ½ΡΠΉ, i Π±ΡΠ» ΡΠ΅ΡΠ½ΡΠΌ. ΠΠ΅ΡΠ½ΠΈΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΠ²Π΅ΡΠΎΠ², ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ ΡΡΠΎΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: nums = [4,2,5,7] Output: [4,5,2,7]π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ even_idx ΠΈ odd_idx Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΡΠ΅ΡΠ½ΡΡ ΠΈ Π½Π΅ΡΠ΅ΡΠ½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. 2β£ΠΡΠΎΠΉΡΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ nums ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ½ΡΠΉ, ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ even_idx ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ even_idx Π½Π° 2. ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ΡΠ΅ΡΠ½ΡΠΉ, ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ odd_idx ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ odd_idx Π½Π° 2. 3β£ΠΠ΅ΡΠ½ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int[] SortArrayByParityII(int[] nums) {
int[] result = new int[nums.Length];
int evenIdx = 0;
int oddIdx = 1;
foreach (int num in nums) {
if (num % 2 == 0) {
result[evenIdx] = num;
evenIdx += 2;
} else {
result[oddIdx] = num;
oddIdx += 2;
}
}
return result;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
ΠΠ°Π΄Π°ΡΠ°: 28. Find the Index of the First Occurrence in a String
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
Π£ΡΠΈΡΡΠ²Π°Ρ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ
needle ΠΈ haystack, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ needle Π² haystack ΠΈΠ»ΠΈ -1, Π΅ΡΠ»ΠΈ needle Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ haystack.
ΠΡΠΈΠΌΠ΅Ρ:
Input: haystack = "sadbutsad", needle = "sad" Output: 0π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
i ΠΈ j Π΄Π»Ρ ΠΏΡΠΎΡ
ΠΎΠ΄Π° ΠΏΠΎ haystack ΠΈ needle.
2β£ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ KMP Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° LPS (longest prefix suffix) Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°.
3β£ΠΠ΅ΡΠ½ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ needle ΠΈΠ»ΠΈ -1, Π΅ΡΠ»ΠΈ needle Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½.
π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public int StrStr(string haystack, string needle) {
int i = 0, j = 0;
int[] lps = BuildLPS(needle);
while (i < haystack.Length) {
if (haystack[i] == needle[j]) {
i++;
j++;
if (j == needle.Length) return i - j;
} else {
if (j > 0) j = lps[j - 1];
else i++;
}
}
return -1;
}
private int[] BuildLPS(string needle) {
int[] lps = new int[needle.Length];
int i = 0;
for (int j = 1; j < needle.Length;) {
if (needle[i] == needle[j]) {
lps[j++] = ++i;
} else {
if (i > 0) i = lps[i - 1];
else j++;
}
}
return lps;
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ3 163
β‘οΈ Π ΡΠ΅ΡΠΈ Π½Π°ΡΠ°Π»ΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎ ΡΠ»ΠΈΠ²Π°ΡΡ ΠΊΡΡΡΡ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠΊΠΎΠ» ΠΏΠΎ Π°ΠΉΡΠΈ
ΠΠΎΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±Π°Π·Π° Ρ ΡΠΎΠ½Π½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° (ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ):
(363 Π²ΠΈΠ΄Π΅ΠΎ, 87 ΠΊΠ½ΠΈΠ³ΠΈ) β Python
(415 Π²ΠΈΠ΄Π΅ΠΎ, 68 ΠΊΠ½ΠΈΠ³ΠΈ) β Frontend
(143 Π²ΠΈΠ΄Π΅ΠΎ, 33 ΠΊΠ½ΠΈΠ³ΠΈ) β ΠΠ/Π₯Π°ΠΊΠΈΠ½Π³
(352 Π²ΠΈΠ΄Π΅ΠΎ, 89 ΠΊΠ½ΠΈΠ³ΠΈ) β Π‘/Π‘++/C#
(343 Π²ΠΈΠ΄Π΅ΠΎ, 87 ΠΊΠ½ΠΈΠ³ΠΈ) β Java/QA
(176 Π²ΠΈΠ΄Π΅ΠΎ, 32 ΠΊΠ½ΠΈΠ³ΠΈ) β Git/Linux
(174 Π²ΠΈΠ΄Π΅ΠΎ, 91 ΠΊΠ½ΠΈΠ³ΠΈ) β DevOps
(167 Π²ΠΈΠ΄Π΅ΠΎ, 53 ΠΊΠ½ΠΈΠ³ΠΈ) β PHP/1Π‘
(227 Π²ΠΈΠ΄Π΅ΠΎ, 83 ΠΊΠ½ΠΈΠ³ΠΈ) β SQL/ΠΠ
(114 Π²ΠΈΠ΄Π΅ΠΎ, 77 ΠΊΠ½ΠΈΠ³ΠΈ) β Π‘ΠΈΡΠ°Π΄ΠΌΠΈΠ½
(107 Π²ΠΈΠ΄Π΅ΠΎ, 43 ΠΊΠ½ΠΈΠ³ΠΈ) β BA/SA
(181 Π²ΠΈΠ΄Π΅ΠΎ, 32 ΠΊΠ½ΠΈΠ³ΠΈ) β Go/Rust
(167 Π²ΠΈΠ΄Π΅ΠΎ, 43 ΠΊΠ½ΠΈΠ³ΠΈ) β Kotlin/Swift
(112 Π²ΠΈΠ΄Π΅ΠΎ, 24 ΠΊΠ½ΠΈΠ³ΠΈ) β Flutter
(137 Π²ΠΈΠ΄Π΅ΠΎ, 93 ΠΊΠ½ΠΈΠ³ΠΈ) β DS/ML
(113 Π²ΠΈΠ΄Π΅ΠΎ, 82 ΠΊΠ½ΠΈΠ³ΠΈ) β GameDev
(183 Π²ΠΈΠ΄Π΅ΠΎ, 37 ΠΊΠ½ΠΈΠ³ΠΈ) β ΠΠΈΠ·Π°ΠΉΠ½
(136 Π²ΠΈΠ΄Π΅ΠΎ, 33 ΠΊΠ½ΠΈΠ³ΠΈ) β PM/HR
Π‘ΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ β Π²ΡΠ΅ Π²ΡΠ»ΠΎΠΆΠΈΠ»ΠΈ Π² Telegram
3 163
ΠΠ°Π΄Π°ΡΠ°: 405. Convert a Number to Hexadecimal
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: easy
ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ num, Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎ Π΄Π²ΡΡ
. ΠΡΠ΅ Π±ΡΠΊΠ²Ρ Π² ΡΡΡΠΎΠΊΠ΅ ΠΎΡΠ²Π΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠΎΡΠ½ΡΠΌΠΈ, ΠΈ Π² ΠΎΡΠ²Π΅ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π΅Π΄ΡΡΠΈΡ
Π½ΡΠ»Π΅ΠΉ, ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΡΠ»Ρ. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ°ΠΌ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
Input: num = 26 Output: "1a"π¨βπ» ΠΠ»Π³ΠΎΡΠΈΡΠΌ: 1β£ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ Π΄Π°, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎ Π΄Π²ΡΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ±Π°Π²ΡΡΠ΅ ΠΊ ΡΠΈΡΠ»Ρ 2^32 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π Ρ ΠΌΠ°ΡΠΊΠΎΠΉ 0xFFFFFFFF. 2β£Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΡΠΎΠΊΡ Ρ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π° 16 ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΠΊΠ° ΡΠΈΡΠ»ΠΎ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. 3β£ΠΠ΅ΡΠ΅Π²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΠ΄Π°Π»ΠΈΡΠ΅ Π²Π΅Π΄ΡΡΠΈΠ΅ Π½ΡΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΡΠ°Ρ, Π²Π΅ΡΠ½ΠΈΡΠ΅ "0". π Π Π΅ΡΠ΅Π½ΠΈΠ΅:
public class Solution {
public string ToHex(int num) {
if (num == 0) return "0";
char[] hexChars = "0123456789abcdef".ToCharArray();
uint n = (uint)num;
StringBuilder result = new StringBuilder();
while (n > 0) {
result.Append(hexChars[n % 16]);
n /= 16;
}
char[] charArray = result.ToString().ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
}
Π‘ΡΠ°Π²Ρ π ΠΈ Π·Π°Π±ΠΈΡΠ°ΠΉ π ΠΠ°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ