Wkład
Tablica: Kontener 2D (matryca, lista list itp.) Z literami takimi jak:
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
Jeśli wybierzesz listę list, możesz założyć, że wszystkie listy podrzędne są tej samej długości.
Zasady
- Aby utworzyć prawidłowy prostokąt, potrzebujesz wszystkich rogów prostokąta z tą samą „literą”.
- Przykład, spójrz na przykładową tablicę z X poniżej. Możesz zobaczyć „X” na (1,0) również na (4,0) również na (1,3) i na (4,3), wtedy masz prostokąt [1,0,4,3], co oznacza, że z (1,0) do (4,3):
Przykładowa tablica z X :
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- Celem jest znalezienie prostokąta lub jednego z prostokątów o największej powierzchni obliczonej przez (prawo-lewo + 1) * (dół-góra + 1)
- Jeśli istnieje wiele prostokątów o tym samym maksymalnym obszarze, wyślij dowolny. Opcjonalnie ten z leksykograficznie najmniejszą (współrzędną górną, lewą współrzędną, prawą współrzędną, współrzędną dolną).
- Prostokąty muszą mieć krawędzie równoległe do krawędzi planszy.
- Każda litera jest drukowalnym znakiem ASCII od A do Z (oba w zestawie).
Wydajność
Dane wyjściowe powinny być pozycjami w lewo iw prawo w rogach największego obszaru prostokątnego. Dla pierwszej przykładowej „planszy” duży kwadrat jest żółty:
Odpowiedź powinna brzmieć:
[1, 1, 8, 4]
Drugi przykładowy przypadek testowy
Dane wejściowe:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Powinien dać jedną z tych trzech list współrzędnych identyfikujących obszar sześciu prostokątów:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
To pytanie jest zamieszczone na stronie Przepełnienie stosu z tytułem: Jak znaleźć największy prostokąt w tablicy 2D utworzonej z czterech identycznych narożników? i z tym niegrzecznym rozwiązaniem JS (mogę powiedzieć „niegrzeczny”, ponieważ to mój kod;):
Ok, to mój pierwszy post, bądź dla mnie tolerancyjny. Zmienię wszystko, co powiesz, aby poprawić quiz.
((left,top),(right,bottom))
powinno być w porządku. Usunąłem swoją odpowiedź i odpowiedz ponownie, gdy pytanie zostanie całkowicie dopracowane.