En İyi 150 RöportajKolay

Kareleri Algıla

'Kareleri Algıla' sorunu için ayrıntılı kılavuz ve Python uygulaması.

Sorun Bildirimi

Kolay

Size X-Y düzleminde bir dizi nokta veriliyor. Aşağıdakileri sağlayan bir veri yapısı tasarlayın:

- Akıştan yeni noktalar ekler. Yinelenen noktalara izin verilir ve farklı noktalar olarak ele alınmalıdır.

- Bir sorgu noktası verildiğinde, üç nokta ve sorgu noktası pozitif alanlı, eksenle hizalanmış bir kare oluşturacak şekilde veri yapısından üç nokta seçmenin yollarını sayar.

Eksen hizalı kare, kenarları aynı uzunlukta olan ve x eksenine ve y eksenine paralel veya dik olan bir karedir.

İşlemlerin 'DetectSquares', 'add' veya 'count' olduğu ve argümanların karşılık gelen parametreler olduğu detectSquares(operations: list, arguments: list) -> list işlevini uygulayın. Sonuçların bir listesini döndürür (Yapıcı ve ekleme için Yok).

Kısıtlamalar
  • point.length == 2
  • 0 <= x, y <= 1000
  • At most 3000 calls in total will be made to add and count

Örnekler

Example 1
Input
["DetectSquares","add","add","add","count","count","add","count"], [[],[3,10],[11,2],[3,2],[11,10],[14,8],[11,2],[11,10]]
Output
[None,None,None,None,1,0,None,2]
Explanation

After adding (3,10), (11,2), (3,2): count(11,10) finds 1 square with corners (3,10),(11,10),(11,2),(3,2). count(14,8) finds 0. After adding another (11,2): count(11,10) finds 2 squares (using each copy of (11,2)).

Need a Hint?
Kümeler veya yığınlar gibi Matematik ve Geometriye özgü veri yapılarını kullanmayı düşünün.
Edge Cases to Watch
  • Boş giriş yapıları
  • Tek eleman girişleri
  • Büyük sayısal sınırlar

Çözmeye Hazır mısınız?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Editörde Aç
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.