Sobes.tech
Middle — Senior

Ինչպե՞ս արդյունավետորեն ստուգել հակառակ x-ով հայելային զույգի առկայությունը։

sobes.tech AI

Պատասխան AI-ից

Արդյունավետորեն ստուգելու համար, թե կա արդյոք հակառակ արժեքներով x-ով կիսվող կետերի զույգ, կարող եք օգտագործել արագ որոնման տվյալների կառուցվածք — օրինակ, միավոր (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) ժամանակում, որտեղ n-ն է կետերի քանակը, և արդյունավետ է մեծ տվյալների հավաքածուների համար։