Sobes.tech
Middle — Senior

Кандай эффективдүү түрдө каршы x менен айна жуптууларынын бар экенин текшерсе болот?

sobes.tech AI

AIден жооп

Тиирүү жана натыйжалуу текшерүү үчүн, каршы маанилерге ээ болгон чекиттердин жуптуулугун, тез издөө үчүн маалымат түзүмүн колдонсо болот — мисалы, топтому (set).

Алгоритм:

  1. Бардык чекиттерди топтомуна салыңыз, O(1) издөө үчүн.
  2. Ар бир чекит (x, y) үчүн, топтомуна (-x, y) чекити бар-жогун текшериңиз.

Эгер мындай чекит табылса, ал Y огу боюнча айна жуптуулугу бар экенин билдирет.

Python мисалы:

points = [(1, 2), (-1, 2), (3, 4), (5, 6)]
point_set = set(points)

for x, y in points:
    if (-x, y) in point_set:
        print(f"Табылган айна жуптуулугу: ({x}, {y}) жана ({-x}, {y})")

Бул ыкма O(n) убакытта иштейт жана чоң маалымат топтомдору үчүн эффективдүү.