Middle — Senior
Ինչպե՞ս արդյունավետորեն ստուգել հակառակ x-ով հայելային զույգի առկայությունը։
sobes.tech AI
Պատասխան AI-ից
Արդյունավետորեն ստուգելու համար, թե կա արդյոք հակառակ արժեքներով x-ով կիսվող կետերի զույգ, կարող եք օգտագործել արագ որոնման տվյալների կառուցվածք — օրինակ, միավոր (set):
Ալգորիթմ:
- Բոլոր կետերը տեղադրեք միավորի մեջ՝ O(1) որոնման համար:
- Ամեն մի կետի (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-ն է կետերի քանակը, և արդյունավետ է մեծ տվյալների հավաքածուների համար։