Skip to content

1057. Campus Bikes #32

@altay9

Description

@altay9

Bu soru için, örnek resme bakmak soruyu anlamayı hızlandıracaktır.
https://leetcode.com/problems/campus-bikes/

Her işçiye, kendisine en yakın olan bisikleti atamak.
Atama işlemi, "bir bisiklete en yakın işçi"den başlanır.

Eğer iki işçi bir bisiklete aynı uzaklıkta ise, index'i küçük olan işçi o bisikleti alır.
İki bisiklet, bir işçiye en yakın uzaklıkta ise, index'i küçük olan bisiklet alınmalıdır.

Bir işçi veyâ bir bisiklet, x ve y koordinatları ile belirtiliyor.
Mesela
workers = [[0,0],[2,1]]: Burada ilk işçi x = 0 ve y = 0 koordinatlarında. İkinci işçi ise x= 2, y =1 koordinatlarında.
bikes = [[1,2],[3,3]]: Burada ilk bisiklet x = 1 ve y = 2 koordinatlarında. İkinci bisiklet ise x= 3, y =3 koordinatlarında.

Bu koordinatları grafikte gösterince, hangi işçinin hangi bisiklete daha yakın olduğu daha rahat görülür.
Ama biz, kod içerisinde Manhattan uzaklığı denilen basit bir yöntemle bu uzaklığı hesaplayacağız.
Örnek:
Burada, p1 ve p2 (x ve y koordinatları olan) iki ayrı nokta olsun. Bu noktaların Manhattan uzaklığı şöyle hesaplanır:

Manhattan(p1, p2) = |p1.x - p2.x| + |p1.y - p2.y|.

Mesela, yukarıdakilere göre,
1 -
ilk işçinin ilk bisiklete uzaklığı: |0 - 1| + |0 - 2| = 3
ilk işçinin ikinci bisiklete uzaklığı: |0 - 3| + |0 - 3| = 6
2-
ikinci işçinin ilk bisiklete uzaklığı: |2 - 1| + |1 - 2| = 2
ikinci işçinin ikinci bisiklete uzaklığı: |2- 3| + |1 - 3| = 3

Burada görüleceği üzere 2 en kısa mesafe olduğu için, ikinci işçi ilk bisikleti alır. İlk işçi ise ikinci bisikleti alır.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions