tgoop.com/fullStackDevs/753
Last Update:
#Algorithm #Sliding_window
#SlidingWindow #CSharp
🧩 الگوریتم Sliding Window:
الگوریتم Sliding Window یکی از تکنیکهای مهم برای حل مسائل آرایهها و رشتهها به طور بهینه است. این روش با استفاده از دو نشانگر برای بررسی بخشهای مختلف داده، به سرعت جواب رو پیدا میکنه.
🔑 چطور کار میکنه؟
- دو نشانگر (`left` و `right`) برای نمایش پنجره (قسمتی از داده) استفاده میکنیم.
- نشانگر راست حرکت میکنه و هر بار یک کاراکتر یا مقدار جدید بررسی میشه.
- وقتی که شرایط خاصی مثل وجود مقدار تکراری یا رسیدن به اندازهای خاص محقق بشه، نشانگر چپ حرکت میکنه تا پنجره رو کوچکتر کنیم.
مزیت اصلی: زمان اجرا به O(n) کاهش مییابد که نسبت به روشهای سنتی با O(n²) بسیار سریعتر است.
💡 مثال: طول بزرگترین زیررشته بدون کاراکتر تکراری
ورودی: "abcabcbb"
خروجی: 3 (زیربرنامه "abc" بزرگترین زیررشته بدون تکرار است)
using System;
using System.Collections.Generic;
class Solution {
public int LengthOfLongestSubstring(string s) {
HashSet<char> set = new HashSet<char>();
int left = 0, maxLength = 0;
for (int right = 0; right < s.Length; right++) {
while (set.Contains(s[right])) {
set.Remove(s[left]);
left++;
}
set.Add(s[right]);
maxLength = Math.Max(maxLength, right - left + 1);
}
return maxLength;
}
}
کاربردها:
- پیدا کردن طول بزرگترین زیررشته یا زیرآرایه
- جستجوی زیرمجموعهها با ویژگیهای خاص
- مسائل مربوط به جمع یا مقایسه زیرآرایهها و زیررشتهها
این الگوریتم خیلی مفیده برای حل مسائل بهینه در آرایهها و رشتهها، خصوصاً وقتی نیاز به
بررسی بخشهای مختلف داریم!
@fullStackDevs
BY Web Devs
Share with your friend now:
tgoop.com/fullStackDevs/753