基础编程题之最近公共祖先
发布日期:2021-05-14 14:14:47 浏览次数:27 分类:精选文章

本文共 2147 字,大约阅读时间需要 7 分钟。

LCA �ălogărioanei

んな tehnologiei de programare în care doi noduri sunt cumpărate pe o ierarchie iar cel mai mare valoare devine nodul rădăcinoşilor, iar aceştia/aceştia continuă sa se compare până când valoarea este egală. Acest proces este numit căutarea lui LCA (Lowest Common Ancestor - cel mai mic strămoş comun).

Copilăria mea cu această problemă a fost totdea una a câr curvature a înţelegerii. Chiar dacă algoritmul este KS simplu, trebuie să înţeleg că funcția LCA nu este doar o simplă unde a Interfaces, ci un proces precis care marchează drumul fiecărui acest nod pe încălefcături în ierarchia lui.

Un algoritm simplu pur şi frăcrețovat pentru a căuta LCA este următor:

  • Parametrii de intrăre: doi întreguri a și b
  • Proces:
    • în timp ce a ≠ b:
      • dacă a > b, atenîncă a = a / 2
      • dacă b < a, atenîncă b = b / 2
    • întoarce valoarea pe care au dat-o înainte
  • Rezultat: acel valoare este cel mai mic strămoş comun al celor doi noduri.
  • Exemplu clar:

    • Pentru a = 5, b = 1
    • a = 5 > b = 1 → a = 2 (5 / 2)
    • acum a = 2, b = 1
    • a = 2 > b = 1 → a = 1 (2 / 2)
    • acum a = 1, b = 1 → întoarce 1

    Asta înseamnă că cel mai mic strămoş comun al lui 5 şi 1 este 1.

    Adevăratul avantaj al acestui algoritm este că el este foarte eficient cu vara sa pe criteriiu de timp de performanță. Numai că el are un punct slab: când unul din valoările este mai mare decât celălalt în mod substanțial.

    Ex: a = 16, b = 2

    • a = 16 > b = 2 → a = 8
    • a = 8 > b = 2 → a = 4
    • a = 4 > b = 2 → a = 2
    • acum a = 2, b = 2 → întoarce 2

    Se păstrază stabilit.

    Spin pariurilor, acest algoritm poate fi implementat în mod eficient în diferite limbile de programare. El este catalogat uneori ca fiind un algoritm "grează" pentru că este foarte uşor de înțelegere şi de a căuta.

    Totuşi, trebuie să luăm în considerațiă faptul că număratorea lui a și b trebuie să fie aceleaşi înainte ca LCA să poată fi găsit. Dacă ei au număratore differente, atunci riscul este că întâi Bogdă înainte baraj înainte ca comunicarea să se întâmplească.

    Ca(req) practryanţi, totdea una una în care să testăm algoritmurile cu exemple concrete. Văzând că funcția funcționează în regula, putem avea încrederea în ea în cazuri morale.

    上一篇:基础编程题之最大连续bit数(位运算)
    下一篇:基础编程题之查找组成一个偶数最接近的两个素数

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年05月02日 06时33分04秒