AI EducademyAIEducademy
🌳

AI की नींव

🌱
AI Seeds

शून्य से शुरू करें

🌿
AI Sprouts

नींव बनाएं

🌳
AI Branches

व्यवहार में लागू करें

🏕️
AI Canopy

गहराई में जाएं

🌲
AI Forest

AI में महारत हासिल करें

🔨

AI में महारत

✏️
AI Sketch

शून्य से शुरू करें

🪨
AI Chisel

नींव बनाएं

⚒️
AI Craft

व्यवहार में लागू करें

💎
AI Polish

गहराई में जाएं

🏆
AI Masterpiece

AI में महारत हासिल करें

🚀

करियर रेडी

🚀
इंटरव्यू लॉन्चपैड

अपनी यात्रा शुरू करें

🌟
व्यवहारिक इंटरव्यू में महारत

सॉफ्ट स्किल्स में महारत

💻
तकनीकी इंटरव्यू

कोडिंग राउंड में सफल हों

🤖
AI और ML इंटरव्यू

ML इंटरव्यू में महारत

🏆
ऑफर और उससे आगे

सबसे अच्छा ऑफर पाएं

सभी कार्यक्रम देखें→

लैब

7 प्रयोग लोड हुए
🧠न्यूरल नेटवर्क प्लेग्राउंड🤖AI या इंसान?💬प्रॉम्प्ट लैब🎨इमेज जनरेटर😊सेंटिमेंट एनालाइज़र💡चैटबॉट बिल्डर⚖️एथिक्स सिमुलेटर
🎯मॉक इंटरव्यूलैब में जाएँ→
nav.journeyब्लॉग
🎯
हमारे बारे में

हर जगह, हर किसी के लिए AI शिक्षा सुलभ बनाना

❓
nav.faq

Common questions answered

✉️
Contact

Get in touch with us

⭐
ओपन सोर्स

GitHub पर सार्वजनिक रूप से निर्मित

सीखना शुरू करें - यह मुफ्त है
AI EducademyAIEducademy

MIT लाइसेंस - ओपन सोर्स

सीखें

  • कार्यक्रम
  • पाठ
  • लैब

समुदाय

  • GitHub
  • योगदान करें
  • आचार संहिता
  • हमारे बारे में
  • सामान्य प्रश्न

सहायता

  • कॉफ़ी खरीदें ☕
  • footer.terms
  • footer.privacy
  • footer.contact
AI और इंजीनियरिंग प्रोग्राम›✏️ AI Sketch›पाठ›Binary Search Patterns
🔍
AI Sketch • मध्यम⏱️ 17 मिनट पढ़ने का समय

Binary Search Patterns

Classic Binary Search - Quick Review

Binary search हर step में search space आधा कर देता है। Sorted array में n elements में से target O(log n) time में मिल जाता है।

def binary_search(nums, target):
    lo, hi = 0, len(nums) - 1
    while lo <= hi:
        mid = (lo + hi) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1

Simple - लेकिन binary search की असली ताकत sorted arrays से काफ़ी आगे है।

Search Space का Concept

Binary search तब काम करता है जब किसी range पर monotonic condition हो। "Array" का होना ज़रूरी नहीं - बस एक range [lo, hi] चाहिए और एक function जो किसी boundary पर False से True में बदले।

Search space:  [lo .................. hi]
Condition:      F  F  F  F  T  T  T  T
                          ^-- answer
🤯
Binary search पहली बार 1946 में publish हुआ, लेकिन पहला bug-free version 1962 में लिखा गया - 16 साल off-by-one errors के!

Binary Search on Answer

Array में ढूँढने की जगह answer space में search करो। सवाल पूछो: "क्या मैं result X हासिल कर सकता हूँ?" हाँ तो छोटा try करो; नहीं तो बड़ा।

Example: Koko Eating Bananas

Koko के पास n piles of bananas हैं और h hours। Minimum eating speed ढूँढो जिससे वो time पर खत्म कर सके।

def min_speed(piles, h):
    lo, hi = 1, max(piles)
    while lo < hi:
        mid = (lo + hi) // 2
        hours = sum((p + mid - 1) // mid for p in piles)
        if hours <= h:
            hi = mid      # speed works, try slower
        else:
            lo = mid + 1  # too slow, go faster
    return lo

Answer space [1, max(piles)] है और condition monotonic है - ज़्यादा speed = कम hours।

Binary search minimum eating speed के लिए answer space को narrow कर रहा है
Binary search on answer: हर iteration में feasible speed range सिकुड़ती जाती है।
पाठ 7 / 100% पूर्ण
←Heaps और Priority Queues

Discussion

Sign in to join the discussion

lessons.suggestEdit

Rotated Sorted Array

एक sorted array किसी pivot पर rotate हुआ: [4, 5, 6, 7, 0, 1, 2]। एक half हमेशा sorted रहता है। mid को lo से compare करके decide करो कौन सा half sorted है, फिर check करो target उस sorted half में है या नहीं।

[4, 5, 6, 7, 0, 1, 2]
 L        M        R
Left half [4..7] sorted है।
Target 1 [4..7] में नहीं → right में search करो।
🧠त्वरित जांच

Rotated sorted array [3,4,5,1,2] में जब mid=2 (value 5) हो, तो कौन सा half sorted है?

First और Last Occurrence

First occurrence ढूँढने के लिए, target मिलने पर रुको मत - hi = mid करो और left में search जारी रखो। Last के लिए lo = mid + 1 करो और right में search करो।

इन दो searches से target का count भी मिलता है: last - first + 1।

Peak Element

वो element जो दोनों neighbours से बड़ा हो। Unsorted array में भी binary search काम करता है: अगर nums[mid] < nums[mid + 1], तो peak right में है; वरना left में। O(log n)।

🤔
Think about it:Peak-finding binary search से क्यों काम करती है जबकि array sorted नहीं है? Sorted order की जगह कौन सी property काम कर रही है?

Search in a 2D Matrix

अगर rows sorted हैं और हर row का पहला element पिछली row के last से बड़ा है, तो matrix को m × n elements की एक sorted array मानो। Index k को row k // n, column k % n में map करो।

बिना Library के Square Root

सबसे बड़ा integer x ढूँढो जहाँ x * x ≤ n। Search space: [0, n]। Classic binary search on answer।

def sqrt(n):
    lo, hi = 0, n
    while lo <= hi:
        mid = (lo + hi) // 2
        if mid * mid <= n:
            lo = mid + 1
        else:
            hi = mid - 1
    return hi

"Minimise the Maximum" Pattern

"Split array largest sum" या "capacity to ship packages within D days" जैसे problems worst case minimise करने कहते हैं। Answer monotonic है: अगर capacity C काम करती है, तो C+1 भी करेगी। C पर binary search करो।

🧠त्वरित जांच

'Capacity to Ship Packages in D Days' में binary search का search space क्या होगा?

Universal Template

lo, hi = min_possible, max_possible
while lo < hi:
    mid = (lo + hi) // 2
    if condition(mid):
        hi = mid        # mid works, try smaller
    else:
        lo = mid + 1    # mid fails, need larger
return lo

hi = mid vs lo = mid adjust करो - first True ढूँढ रहे हो या last True।

🧠त्वरित जांच

Size S के answer space पर binary search जिसमें O(n) feasibility check हो - time complexity क्या है?

🤔
Think about it:जब problem statement में "minimum possible maximum" या "maximum possible minimum" दिखे, तो दिमाग में सबसे पहले क्या आना चाहिए?

📚 और पढ़ें

  • NeetCode - Binary Search playlist - easy से hard तक curated problems
  • Tech Interview Handbook - Binary Search - patterns, tips और pitfalls
  • LeetCode Binary Search study plan - progressive problem set