मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम
प्रत्येक तत्व के लिए O(1) में विंडो के अधिकतम मान वाले प्रश्नों का उत्तर देने हेतु सूचकांकों का घटता डेक बनाए रखिए और sliding-window-maximum समस्या को O(n) में हल कीजिए।
मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम, CoddyKit पर DSA Interview Prep का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DSA Interview Prep सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DSA Interview Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
स्लाइडिंग विंडो का अधिकतम निकालने की समस्या
स्लाइडिंग विंडो का अधिकतम समस्या (LeetCode 239) में एक सरणी और विंडो का आकार k दिया जाता है। विंडो जैसे-जैसे एक बार में एक स्थान दाईं ओर खिसकती है, प्रत्येक विंडो का अधिकतम तत्व परिणाम के रूप में देना होता है। सीधा पूर्ण-जाँच तरीका प्रत्येक k-तत्व वाली विंडो का अधिकतम O(k) में निकालता है — इसलिए कुल O(nk) समय लगता है, जो बड़े k के लिए बहुत धीमा है।
मोनोटोनिक डेक (दोनों सिरों वाली कतार) का समाधान सूचकांकों का घटता हुआ डेक बनाए रखकर कुल O(n) समय प्राप्त करता है। आगे के सिरे पर वर्तमान विंडो के अधिकतम तत्व का सूचकांक हमेशा रहता है, जिससे O(1) में अधिकतम के प्रश्न पूछे जा सकते हैं और दोनों सिरों पर क्रियाएँ की जा सकती हैं।
from collections import deque
# Brute force O(nk) for comparison
def sliding_max_brute(nums, k):
return [max(nums[i:i+k]) for i in range(len(nums) - k + 1)]
nums = [1, 3, -1, -3, 5, 3, 6, 7]
k = 3
print('Input:', nums, 'k=', k)
print('Expected: [3, 3, 5, 5, 6, 7]')
print('Brute: ', sliding_max_brute(nums, k))मोनोटोनिक डेक: मुख्य विचार
एक मोनोटोनिक रूप से घटता डेक बनाए रखें, जिसमें मान नहीं बल्कि सूचकांक संग्रहीत हों। अपरिवर्तनीय स्थिति: nums[deque[0]] >= nums[deque[1]] >= ... >= nums[deque[-1]]। सूचकांक i जोड़ने से पहले:
- समाप्त हो चुके सूचकांकों को आगे के सिरे से हटाएँ: यदि
deque[0] <= i - kहै, तो वह सूचकांक विंडो से बाहर जा चुका है। - छोटे मान वाले सूचकांकों को पिछले सिरे से हटाएँ: जब तक
nums[deque[-1]] <= nums[i]है, वे सूचकांक भविष्य की किसी भी विंडो का अधिकतम नहीं बन सकते (वे बाईं ओर हैं और छोटे हैं), इसलिए उन्हें हटा दें।
इन क्रियाओं के बाद i को पिछले सिरे पर जोड़ें। आगे का सिरा वर्तमान विंडो का अधिकतम हमेशा देता है।
from collections import deque
def sliding_window_max(nums, k):
dq = deque() # stores indices; values are decreasing
result = []
for i, n in enumerate(nums):
# 1. Remove indices outside the current window
while dq and dq[0] <= i - k:
dq.popleft()
# 2. Remove indices with smaller values from the back
while dq and nums[dq[-1]] <= n:
dq.pop()
dq.append(i)
# 3. Record max when first full window is complete
if i >= k - 1:
result.append(nums[dq[0]]) # front = max of current window
return result
nums = [1, 3, -1, -3, 5, 3, 6, 7]
print(sliding_window_max(nums, 3)) # [3, 3, 5, 5, 6, 7]डेक को चरण-दर-चरण समझना
आइए k=3 के साथ [1, 3, -1, -3, 5, 3, 6, 7] का क्रमवार विश्लेषण करें:
- i=0 (1): dq=[0]
- i=1 (3): pop 0 (1<3), dq=[1]
- i=2 (-1): -1<3, इसलिए इसे रखें, dq=[1,2]। विंडो [1,3,-1], अधिकतम=nums[1]=3
- i=3 (-3): -3<-1, dq=[1,2,3]। आगे का सिरा जाँचें: 1 > 3-3=0, OK। विंडो का अधिकतम=3
- i=4 (5): pop 3,2,1 (सभी छोटे हैं), dq=[4]। आगे का सिरा 4 > 4-3=1, OK। अधिकतम=5
- i=5 (3): 3<5, dq=[4,5]। आगे का सिरा 4 > 5-3=2, OK। अधिकतम=5
- i=6 (6): pop 5,4 (दोनों छोटे हैं), dq=[6]। अधिकतम=6
- i=7 (7): pop 6, dq=[7]। अधिकतम=7
from collections import deque
def sliding_window_max_trace(nums, k):
dq = deque()
result = []
for i, n in enumerate(nums):
while dq and dq[0] <= i - k:
print(f' Remove expired index {dq[0]} from front')
dq.popleft()
while dq and nums[dq[-1]] <= n:
print(f' Remove smaller index {dq[-1]} (val={nums[dq[-1]]}) from back')
dq.pop()
dq.append(i)
print(f'i={i} n={n}: dq={list(dq)} vals={[nums[j] for j in dq]}')
if i >= k - 1:
win_max = nums[dq[0]]
result.append(win_max)
print(f' Window {nums[max(0,i-k+1):i+1]} -> max={win_max}')
return result
nums = [1, 3, -1, -3, 5, 3, 6, 7]
result = sliding_window_max_trace(nums, 3)
print('Result:', result)प्रत्येक तत्व को अधिकतम एक बार जोड़ा और हटाया क्यों जाता है
O(n) की गारंटी उसी परिशोधित विश्लेषण से आती है जो मोनोटोनिक स्टैक के लिए उपयोग होता है: प्रत्येक सूचकांक डेक में ठीक एक बार जोड़ा जाता है और अधिकतम एक बार हटाया जाता है — या तो समाप्त होने पर आगे के सिरे से, या किसी नए बेहतर तत्व द्वारा पीछे छोड़ दिए जाने पर पिछले सिरे से। पूरे लूप में डेक की कुल क्रियाएँ अधिकतम 2n होती हैं।
आंतरिक लूप कुल जटिलता नहीं बढ़ाते — उनमें किया गया हर निष्कासन पहले किए गए जोड़ने से मिले समय के द्वारा पहले ही चुकाया जा चुका होता है। यही तर्क मोनोटोनिक स्टैक पर भी लागू होता है, लेकिन यहाँ इसे दोनों सिरों से हटाने की सुविधा वाले डेक तक विस्तारित किया गया है।
from collections import deque
def sliding_window_max_instrumented(nums, k):
dq = deque()
result = []
front_pops = back_pops = pushes = 0
for i, n in enumerate(nums):
while dq and dq[0] <= i - k:
dq.popleft(); front_pops += 1
while dq and nums[dq[-1]] <= n:
dq.pop(); back_pops += 1
dq.append(i); pushes += 1
if i >= k - 1:
result.append(nums[dq[0]])
print(f'n={len(nums)}: pushes={pushes}, front_pops={front_pops}, back_pops={back_pops}')
print(f'Total deque ops = {pushes + front_pops + back_pops} <= 3n = {3*len(nums)}')
return result
import random; random.seed(0)
nums = [random.randint(-100, 100) for _ in range(20)]
sliding_window_max_instrumented(nums, 5)स्लाइडिंग विंडो का न्यूनतम
स्लाइडिंग विंडो का न्यूनतम इसका सममित समकक्ष है: एक मोनोटोनिक रूप से बढ़ता डेक बनाए रखें (जब नया तत्व पिछले सिरे के तत्व से छोटा हो, तो पिछले सिरे से pop करें)। आगे के सिरे पर वर्तमान विंडो का न्यूनतम हमेशा रहता है। अधिकतम वाले रूप के अलावा बाकी हर चरण समान है — केवल तुलना की दिशा उलट दें।
स्लाइडिंग विंडो का न्यूनतम पूछने वाली समस्याएँ अक्सर बड़े एल्गोरिदम के भीतर उप-समस्याओं के रूप में आती हैं। उदाहरण के लिए, k मध्यवर्ती पड़ावों वाले मार्ग पर सामान ले जाने की न्यूनतम लागत के लिए DP सरणियों पर स्लाइडिंग विंडो का न्यूनतम निकालना पड़ सकता है।
from collections import deque
def sliding_window_min(nums, k):
dq = deque() # increasing monotonic deque
result = []
for i, n in enumerate(nums):
while dq and dq[0] <= i - k:
dq.popleft() # expired
while dq and nums[dq[-1]] >= n:
dq.pop() # pop larger values from back
dq.append(i)
if i >= k - 1:
result.append(nums[dq[0]]) # front = min
return result
nums = [1, 3, -1, -3, 5, 3, 6, 7]
print('Max k=3:', sliding_window_min.__name__, '->', end=' ')
print(sliding_window_min(nums, 3)) # [-1, -3, -3, -3, 3, 3]
from collections import deque
def sliding_window_max(nums, k):
dq = deque(); result = []
for i, n in enumerate(nums):
while dq and dq[0] <= i-k: dq.popleft()
while dq and nums[dq[-1]] <= n: dq.pop()
dq.append(i)
if i >= k-1: result.append(nums[dq[0]])
return result
print('Max k=3:', sliding_window_max(nums, 3)) # [3,3,5,5,6,7]जंप गेम VI: मोनोटोनिक डेक के साथ DP
जंप गेम VI (LeetCode 1696) एक उत्कृष्ट उदाहरण है, जहाँ DP और मोनोटोनिक डेक साथ काम करते हैं। किसी सरणी और अधिकतम छलाँग आकार k के लिए, सूचकांक 0 से शुरू करके, हर चरण में 1 से k स्थान आगे छलाँग लगाएँ और लक्ष्य खाने का स्कोर जोड़ें। कुल स्कोर अधिकतम करें। DP पुनरावृत्ति है: dp[i] = nums[i] + max(dp[i-k], ..., dp[i-1])। DP सरणी पर स्लाइडिंग विंडो का अधिकतम लेने से कुल O(n) समय मिलता है।
यह प्रतिरूप — जिसमें प्रत्येक खाना पिछले खानों की निश्चित आकार वाली विंडो के अधिकतम पर निर्भर करता है — अक्सर दिखाई देता है और इसके लिए हमेशा मोनोटोनिक डेक की आवश्यकता होती है।
from collections import deque
def max_result(nums, k):
n = len(nums)
dp = [0] * n
dp[0] = nums[0]
dq = deque([0]) # indices of max dp values in current window
for i in range(1, n):
# Remove expired indices
while dq and dq[0] < i - k:
dq.popleft()
# dp[i] = nums[i] + max dp in window [i-k, i-1]
dp[i] = nums[i] + dp[dq[0]]
# Maintain decreasing deque on dp values
while dq and dp[dq[-1]] <= dp[i]:
dq.pop()
dq.append(i)
return dp[n - 1]
print(max_result([1,-1,-2,4,-7,3], 2)) # 7: path 1->4->3
print(max_result([10,-5,-2,4,0,3], 3)) # 17: path 10->4->3
print(max_result([1,-5,-20,4,-1,3,-6,-3], 2)) # 0स्लाइडिंग विंडो का अधिकतम: सेगमेंट ट्री का विकल्प
जिन समस्याओं में विंडो का आकार बदलता रहता है (स्थिर k नहीं होता), उनमें मोनोटोनिक डेक सीधे लागू नहीं होता। इसके बजाय, स्थिर परास-अधिकतम के लिए स्पार्स टेबल का उपयोग करें; O(n log n) पूर्व-प्रसंस्करण के बाद प्रत्येक query O(1) में की जा सकती है। या गतिशील अद्यतनों के लिए सेगमेंट ट्री का उपयोग करें, जिसमें प्रत्येक query O(log n) में होती है। हालाँकि, स्थिर-k वाली स्लाइडिंग विंडो के लिए O(n) पर डेक का कोई मुकाबला नहीं है।
साक्षात्कार में, जब विंडो का आकार स्थिर हो, तो O(n log n) सेगमेंट ट्री की तुलना में O(n) मोनोटोनिक डेक को हमेशा प्राथमिकता दें। इस समझौते का उल्लेख करें: डेक मनमाने विंडो आकारों या अद्यतनों को संभाल नहीं सकता, जबकि सेगमेंट ट्री ऐसा कर सकते हैं।
# Sparse table for static RMQ (range maximum query)
import math
def build_sparse_table(arr):
n = len(arr)
LOG = int(math.log2(n)) + 1 if n else 1
table = [[0]*n for _ in range(LOG)]
table[0] = arr[:]
j = 1
while (1 << j) <= n:
for i in range(n - (1 << j) + 1):
table[j][i] = max(table[j-1][i], table[j-1][i + (1 << (j-1))])
j += 1
return table
def query(table, l, r):
k = int(math.log2(r - l + 1))
return max(table[k][l], table[k][r - (1 << k) + 1])
arr = [1, 3, -1, -3, 5, 3, 6, 7]
table = build_sparse_table(arr)
k = 3
result = [query(table, i, i + k - 1) for i in range(len(arr) - k + 1)]
print('Sparse table result:', result) # [3, 3, 5, 5, 6, 7]एक तत्व हटाने के बाद 1 की सबसे लंबी उपसरणी
LeetCode 1493: एक द्विआधारी सरणी दी गई है; ठीक एक तत्व (जो 0 या 1 हो सकता है) हटाने के बाद 1 वाली सबसे लंबी उपसरणी की लंबाई खोजें। यह स्लाइडिंग विंडो की समस्या है। ऐसी विंडो बनाए रखें जिसमें अधिकतम एक 0 हो। जब विंडो में एक से अधिक 0 हों, तो उसे बाईं ओर से सिकोड़ें।
इसमें बदलते आकार वाली स्लाइडिंग विंडो का प्रतिरूप उपयोग होता है — डेक का नहीं। हालाँकि, इसे अधिकतम-विंडो तकनीक के साथ मिलाया जा सकता है: सभी मान्य विंडो मिलने के बाद, उनकी अधिकतम लंबाई ही उत्तर होती है। 'एक तत्व हटाएँ' का अर्थ है कि 1 वाली हमारी विंडो में ठीक एक 0 की अनुमति है।
def longest_subarray(nums):
left = 0
zeros = 0
max_len = 0
for right in range(len(nums)):
if nums[right] == 0:
zeros += 1
while zeros > 1:
if nums[left] == 0:
zeros -= 1
left += 1
# Window [left, right] has at most 1 zero
# After deleting one element, length = right - left (not +1, since we delete one)
max_len = max(max_len, right - left)
return max_len
print(longest_subarray([1,1,0,1])) # 3: delete the 0
print(longest_subarray([0,1,1,1,0,1,1,0,1])) # 5
print(longest_subarray([1,1,1])) # 2: must delete one 1डेक बनाम कतार बनाम स्टैक की तुलना
साक्षात्कार में यह समझना महत्वपूर्ण है कि किस पात्र का उपयोग कब करना है:
- स्टैक (सूची): LIFO, एक ही सिरे से पहुँच। DFS, व्यंजक विश्लेषण और मोनोटोनिक स्टैक की समस्याओं के लिए उपयोग करें।
- कतार (बाएँ सिरे पर जोड़ने और popleft वाले डेक के साथ): FIFO, एक सिरे पर जोड़ना और दूसरे सिरे से pop करना। BFS और कार्य-निर्धारण के लिए उपयोग करें।
- डेक: दोनों सिरों से O(1) में पहुँच। समाप्ति वाली स्लाइडिंग विंडो (आगे का सिरा हटाना) और मोनोटोनिक अपरिवर्तनीय स्थिति (पिछला सिरा हटाना) के लिए उपयोग करें। स्लाइडिंग विंडो का अधिकतम डेक की आदर्श समस्या है।
पाइथन का collections.deque इन तीनों के लिए साधन है। स्टैक के व्यवहार के लिए append/pop और कतार या डेक के व्यवहार के लिए append/popleft या appendleft/pop का उपयोग करें।
from collections import deque
# deque as stack
stack = deque()
stack.append(1); stack.append(2); stack.append(3)
print('Stack pop:', stack.pop()) # 3 (LIFO)
# deque as queue
queue = deque()
queue.append(1); queue.append(2); queue.append(3)
print('Queue pop:', queue.popleft()) # 1 (FIFO)
# deque as sliding window with front expiry + back monotonic
dq = deque()
nums = [3, 1, 4, 1, 5, 9, 2, 6]
k = 3
for i, n in enumerate(nums):
while dq and dq[0] <= i - k: dq.popleft() # expire front
while dq and nums[dq[-1]] <= n: dq.pop() # maintain back
dq.append(i)
if i >= k - 1:
print(f'Window {nums[max(0,i-k+1):i+1]}: max={nums[dq[0]]}')कम-से-कम K योग वाली सबसे छोटी उपसरणी: डेक + उपसर्ग योग
कम-से-कम K योग वाली सबसे छोटी उपसरणी (LeetCode 862) एक उन्नत समस्या है, जिसमें उपसर्ग योगों को मोनोटोनिक डेक के साथ जोड़ा जाता है। उपसर्ग योग बनाएँ, फिर डेक का उपयोग करके प्रत्येक दाएँ अंतिम बिंदु के लिए ऐसा सबसे बायाँ उपसर्ग योग खोजें जो prefix[right] - prefix[left] >= k को संतुष्ट करता हो। डेक उपसर्ग योगों को बढ़ते क्रम में बनाए रखता है (बढ़ता क्रम बनाए रखने के लिए पिछले सिरे से pop करता है) और मान्य उत्तर एकत्र करने के लिए आगे के सिरे से pops करता है।
यह सबसे कठिन स्लाइडिंग विंडो समस्याओं में से एक है, क्योंकि इसमें ऋणात्मक संख्याएँ होती हैं (जिससे सरल दो-सूचक विधि काम नहीं करती) और डेक को मोनोटोनिक संरचना तथा समाप्ति-तंत्र, दोनों के रूप में काम करना पड़ता है।
from collections import deque
def shortest_subarray(nums, k):
n = len(nums)
prefix = [0] * (n + 1)
for i in range(n):
prefix[i + 1] = prefix[i] + nums[i]
dq = deque() # monotonic increasing deque of indices into prefix
result = float('inf')
for right in range(n + 1):
# Pop from front: valid subarrays ending at `right`
while dq and prefix[right] - prefix[dq[0]] >= k:
result = min(result, right - dq.popleft())
# Pop from back: maintain increasing deque
while dq and prefix[dq[-1]] >= prefix[right]:
dq.pop()
dq.append(right)
return result if result != float('inf') else -1
print(shortest_subarray([1], 1)) # 1
print(shortest_subarray([1, 2], 4)) # -1
print(shortest_subarray([2, -1, 2], 3)) # 3
print(shortest_subarray([84,-37,32,40,95], 167)) # 3डेक समस्याओं के लिए साक्षात्कार रणनीति
इन संकेतों से मोनोटोनिक डेक की समस्या पहचानें: (1) आपको निश्चित आकार वाली स्लाइडिंग विंडो का अधिकतम या न्यूनतम चाहिए, (2) आपको DP पुनरावृत्ति dp[i] = f(nums[i], max(dp[i-k..i-1])) चाहिए, या (3) आपको मोनोटोनिक शर्त पूरी करने वाला निकटतम मान्य सूचकांक चाहिए।
साक्षात्कार में डेक समाधान साफ़-सुथरे ढंग से लिखें: deque आयात करें, दो अपरिवर्तनीय स्थितियाँ बनाए रखें (आगे के सिरे की समाप्ति, पिछले सिरे की मोनोटोनिकता), और k-1 सूचकांक से परिणाम लौटाएँ। O(n) समय जटिलता और डेक के लिए O(k) स्थान का उल्लेख हमेशा करें (एक समय में अधिकतम k सूचकांक संग्रहीत होते हैं), और सुधार दिखाने के लिए O(nk) पूर्ण-जाँच तरीके से तुलना करें।
from collections import deque
# Clean, interview-ready template
def sliding_window_max_template(nums, k):
if not nums or k == 0:
return []
dq = deque() # monotonic decreasing, stores indices
result = []
for i in range(len(nums)):
# Invariant 1: remove expired indices (outside window)
while dq and dq[0] < i - k + 1:
dq.popleft()
# Invariant 2: remove indices with smaller values (useless)
while dq and nums[dq[-1]] < nums[i]:
dq.pop()
dq.append(i)
# Record result once first full window is established
if i >= k - 1:
result.append(nums[dq[0]])
return result
# Complexity: O(n) time, O(k) space
print(sliding_window_max_template([1,3,-1,-3,5,3,6,7], 3))
print(sliding_window_max_template([1], 1))
print(sliding_window_max_template([], 3))त्वरित जाँच
इस पाठ में सिखाई गई डेटा संरचनाएँ और एल्गोरिदम — कोडिंग साक्षात्कार की तैयारी की अवधारणाओं की अपनी समझ का परीक्षण करें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: एक मोनोटोनिक रूप से घटता डेक अपने आगे के सिरे पर विंडो का अधिकतम बनाए रखता है और पीछे से आने वाले नए तत्वों से छोटे तत्वों को पिछले सिरे से हटा देता है, समाप्त हो चुके सूचकांकों को विंडो की सीमा से बाहर जाने पर आगे के सिरे से हटा दिया जाता है, और प्रत्येक सूचकांक को अधिकतम एक बार जोड़ा और हटाया जाता है, जिससे कुल O(n) समय और डेक के लिए O(k) स्थान मिलता है। अब हम मोनोटोनिक स्टैक और दो-सूचक विधि, दोनों का उपयोग करके वर्षाजल को रोकने की समस्या हल करेंगे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम” पाठ निःशुल्क है?
हाँ — DSA Interview Prep अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DSA Interview Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम” में मैं क्या सीखूँगा?
प्रत्येक तत्व के लिए O(1) में विंडो के अधिकतम मान वाले प्रश्नों का उत्तर देने हेतु सूचकांकों का घटता डेक बनाए रखिए और sliding-window-maximum समस्या को O(n) में हल कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DSA Interview Prep का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DSA Interview Prep शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DSA Interview Prep शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DSA Interview Prep पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DSA Interview Prep पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- मोनोटोनिक स्टैक: बढ़ता बनाम घटता
- हिस्टोग्राम में सबसे बड़ा आयत
- मोनोटोनिक डेक के साथ स्लाइडिंग विंडो अधिकतम
- वर्षा जल संग्रहण: स्टैक और दो पॉइंटर