AIUnlimited
🌳

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 ఆచరణ

📖
ఓపెన్-సోర్స్ మోడల్స్ అర్థం చేసుకోవడం

ఓపెన్-సోర్స్ మోడల్స్ ప్రాథమికాలు మరియు వనరులు

🎯
సమస్య నుండి మోడల్ టాస్క్‌కు

వ్యాపార సమస్యలను మోడల్ టాస్క్‌లుగా మార్చడం

⚡
మీ మొదటి మోడల్ నడపడం

30 నిమిషాల్లో మీ మొదటి ఫలితాలను చూడండి

🔧
ఫైన్-ట్యూనింగ్ మరియు మూల్యాంకనం

మోడల్స్ ఫైన్-ట్యూన్ చేసి పనితీరును మూల్యాంకనం చేయండి

🚀
అప్లికేషన్ సిస్టమ్‌లు

వాస్తవ AI అనువర్తనాలను నిర్మించండి

🎨
జనరేటివ్ AI

ఓపెన్-సోర్స్ AIGC మోడల్స్ అన్వేషించండి

🤖
ఏజెంట్లు

ఏజెంట్ ఫ్రేమ్‌వర్క్‌లు మరియు MCP టూల్స్ నేర్చుకోండి

📐
సప్లిమెంటరీ ప్రాథమికాలు

LLM ప్రాథమికాలు మరియు మూల్యాంకనం

🎓

Claude Academy

🤖
Claude 101

Learn AI basics with Claude

💻
Claude Code 101

Code with Claude as your pair programmer

🤝
Introduction to Claude Cowork

Collaborate with Claude on complex projects

⚙️
Claude Platform 101

Build apps with the Claude API

ల్యాబ్

7 ప్రయోగాలు లోడ్ అయ్యాయి
🧬Neural Network Playground🤖AI లేదా మనిషి?🥋Prompt Engineering Dojo🏁Algorithm Race🧠AI ట్రివియా ఛాలెంజ్🏗️సిస్టమ్ డిజైన్ క్యాన్వాస్
🎯మాక్ ఇంటర్వ్యూల్యాబ్‌లోకి వెళ్ళండి→
🚀

కెరీర్ అభివృద్ధి

🚀
ఇంటర్వ్యూ లాంచ్‌ప్యాడ్

మీ ప్రయాణం ప్రారంభించండి

🌟
ప్రవర్తనా ఇంటర్వ్యూ నైపుణ్యం

సాఫ్ట్ స్కిల్స్ నేర్చుకోండి

💻
సాంకేతిక ఇంటర్వ్యూలు

కోడింగ్ రౌండ్ విజయం సాధించండి

🤖
AI & ML ఇంటర్వ్యూలు

ML ఇంటర్వ్యూ నైపుణ్యం

🏆
ఆఫర్ & అంతకు మించి

అత్యుత్తమ ఆఫర్ పొందండి

నేర్చుకోవడం ప్రారంభించండి
AIUnlimited

MIT లైసెన్స్

沪ICP备18025655号-11

నేర్చుకోండి

  • AI ప్రాథమికాలు
  • AI ఆచరణ
  • Claude Academy
  • ల్యాబ్
  • కెరీర్ అభివృద్ధి

సంఘం

  • మా గురించి
  • తరచుగా అడిగే ప్రశ్నలు

మద్దతు

  • footer.terms
  • footer.privacy
  • footer.contact
AI & ఇంజనీరింగ్ ప్రోగ్రామ్‌లు›✏️ AI Sketch›పాఠాలు›Binary Search పాటర్న్‌లు
🔍
AI Sketch • మధ్యస్థం⏱️ 17 నిమిషాల పఠన సమయం

Binary Search పాటర్న్‌లు

క్లాసిక్ Binary Search - త్వరిత సమీక్ష

Binary search ప్రతి అడుగులో search space ను సగానికి తగ్గిస్తుంది. n ఎలిమెంట్ల sorted array లో O(log n) సమయంలో లక్ష్యాన్ని కనుగొంటుంది.

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

సరళంగా ఉంది - కానీ binary search యొక్క నిజమైన శక్తి sorted arrays కంటే చాలా దూరం వెళ్తుంది.

Search Space భావన

మీ దగ్గర ఒక పరిధిలో monotonic condition ఉన్నప్పుడు binary search పనిచేస్తుంది. "Array" ఉండాల్సిన అవసరం కూడా లేదు - మీకు [lo, hi] పరిధి మరియు ఏదో సరిహద్దు వద్ద False నుండి True కు మారే function మాత్రమే కావాలి.

Search space:  [lo .................. hi]
Condition:      F  F  F  F  T  T  T  T
                          ^-- సమాధానం
🤯
Binary search మొదటిసారి 1946 లో ప్రచురించబడింది, కానీ మొదటి bug-free వెర్షన్ 1962 వరకు రాయబడలేదు - 16 సంవత్సరాల off-by-one errors!

Answer పై Binary Search

Array లో వెతకడానికి బదులు, answer space లో వెతకండి. ప్రశ్న: "నేను X ఫలితాన్ని సాధించగలనా?" అవును అయితే, చిన్నది ప్రయత్నించండి; కాదంటే, పెద్దది ప్రయత్నించండి.

ఉదాహరణ: Koko Eating Bananas

Koko దగ్గర n అరటి గుట్టలు మరియు h గంటలు ఉన్నాయి. ఆమె సమయానికి పూర్తి చేయడానికి కనీస తినే వేగం కనుగొనండి.

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      # వేగం పనిచేస్తుంది, నెమ్మదిగా ప్రయత్నించు
        else:
            lo = mid + 1  # చాలా నెమ్మది, వేగంగా వెళ్ళు
    return lo

Answer space [1, max(piles)] మరియు condition monotonic - ఎక్కువ వేగం అంటే ఎల్లప్పుడూ తక్కువ గంటలు.

పాఠం 7 / 100% పూర్తి
←Heaps మరియు Priority Queues

చర్చ

సైన్ ఇన్ చర్చలో చేరండి

కనీస తినే వేగం కోసం binary search answer space ను తగ్గిస్తూ
Answer పై binary search: ప్రతి iteration లో సాధ్యమైన వేగం పరిధిని తగ్గించండి.

Rotated Sorted Array

ఒక pivot వద్ద rotate చేసిన sorted array: [4, 5, 6, 7, 0, 1, 2]. ఒక సగం ఎల్లప్పుడూ sorted గా ఉంటుంది. ఏ సగమో నిర్ణయించడానికి mid ని lo తో పోల్చండి, తర్వాత లక్ష్యం sorted సగంలో ఉందో లేదో తనిఖీ చేయండి.

[4, 5, 6, 7, 0, 1, 2]
 L        M        R
ఎడమ సగం [4..7] sorted గా ఉంది.
లక్ష్యం 1 [4..7] లో లేదు → కుడి వైపు వెతకండి.
🧠త్వరిత తనిఖీ

Rotated sorted array [3,4,5,1,2] లో, mid=2 (విలువ 5) అయినప్పుడు ఏ సగం sorted?

మొదటి మరియు చివరి సంఘటన

మొదటి సంఘటన కనుగొనడానికి: లక్ష్యం దొరికినప్పుడు, ఆగకండి - hi = mid సెట్ చేసి ఎడమ వైపు వెతకడం కొనసాగించండి. చివరి కోసం, lo = mid + 1 సెట్ చేసి కుడి వైపు వెతకండి.

ఈ జత searches లక్ష్యం యొక్క సంఖ్యను కూడా ఇస్తుంది: last - first + 1.

Peak Element

రెండు పొరుగువారి కంటే పెద్ద element. Unsorted array లో కూడా binary search పనిచేస్తుంది: nums[mid] < nums[mid + 1] అయితే, peak కుడి వైపు ఉంటుంది; లేకపోతే ఎడమ వైపు. O(log n).

🤔
Think about it:Array sorted కాకపోయినా peak-finding binary search తో ఎందుకు పనిచేస్తుంది? sorted order స్థానంలో ఇక్కడ ఏ ఆస్తి ఉంటుంది?

2D Matrix లో వెతకడం

Rows sorted అయి ఉండి, ప్రతి row మొదటి element ముందటి row చివరి దాని కంటే పెద్దది అయితే, matrix ను m × n elements ఉన్న ఒకే sorted array గా చూడండి. Index k ను row k // n, column k % n గా మార్చండి.

లైబ్రరీ లేకుండా వర్గమూలం

x * x ≤ n అయ్యే అతిపెద్ద పూర్ణాంకం x కనుగొనండి. Search space: [0, n]. క్లాసిక్ 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

"గరిష్టాన్ని కనిష్టం చేయి" పాటర్న్

"Split array largest sum" లేదా "D రోజుల్లో packages పంపే capacity" వంటి సమస్యలు చెత్త సందర్భాన్ని కనిష్టం చేయమని అడుగుతాయి. సమాధానం monotonic: capacity C పనిచేస్తే, C+1 కూడా పనిచేస్తుంది. C పై binary search.

🧠త్వరిత తనిఖీ

'D రోజుల్లో Packages పంపే Capacity' కోసం, binary search యొక్క search space ఏమిటి?

సార్వత్రిక Template

lo, hi = min_possible, max_possible
while lo < hi:
    mid = (lo + hi) // 2
    if condition(mid):
        hi = mid        # mid పనిచేస్తుంది, చిన్నది ప్రయత్నించు
    else:
        lo = mid + 1    # mid విఫలం, పెద్దది కావాలి
return lo

మీరు మొదటి True వెతుకుతున్నారా లేదా చివరి True వెతుకుతున్నారా అనేదాన్ని బట్టి hi = mid vs lo = mid సర్దుబాటు చేయండి.

🧠త్వరిత తనిఖీ

S పరిమాణ answer space పై O(n) feasibility check తో binary search యొక్క time complexity ఏమిటి?

🤔
Think about it:సమస్య statement లో "సాధ్యమైన కనీస గరిష్టం" లేదా "సాధ్యమైన గరిష్ట కనిష్టం" అనే పదాలు కనిపించినప్పుడు, వెంటనే ఏమి గుర్తుకు రావాలి?

📚 మరింత చదవండి

  • NeetCode - Binary Search playlist - సులభం నుండి కఠినం వరకు సమస్యలు
  • Tech Interview Handbook - Binary Search - పాటర్న్‌లు, చిట్కాలు మరియు ఆటంకాలు
  • LeetCode Binary Search study plan - క్రమానుగత సమస్యల సెట్