Zastąp każdy element rangą
Szczegółowy przewodnik i implementacja Python dla problemu „Zamień każdy element według rangi”.
1. Ucz się
Problem „Zamień każdy element według rangi” jest kluczowym wyzwaniem w sekcji Tablice.
Ta implementacja koncentruje się na logice prostego poziomu w Python.
W dostarczanych przez nas rozwiązaniach priorytetem jest dokładność techniczna i czytelność kodu.
2. Real-World Applications
3. Visual Intuition
Wizualizacja przepływu logicznego dla Zamień każdy element według rangi.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Przeczytaj uważnie opis problemu dotyczący Zamień każdy element według rangi.
2. Formulate brute force
Zaprojektuj proste rozwiązanie iteracyjne.
3. Identify inefficiency
Poszukaj zbędnych obliczeń.
4. Optimize search path
Użyj funkcji mieszania lub sortowania, aby przyspieszyć proces.
5. Final Implementation
Oczyść kod dla standardów produkcyjnych.
Oświadczenie o problemie
Napisz funkcję replace_by_rank(arr), która zastępuje każdy element tablicy jego rangą, gdy tablica jest sortowana w kolejności rosnącej. Najmniejszy element otrzymuje rangę 1, drugi najmniejszy otrzymuje rangę 2 i tak dalej. Jeśli dwa elementy są równe, otrzymują tę samą rangę. Zwróć tablicę rang.
- •1 <= len(arr) <= 10^5
- •-10^9 <= arr[i] <= 10^9
Przykłady
arr = [20, 15, 26, 2, 98, 6]
[4, 3, 5, 1, 6, 2]
Sorted: [2,6,15,20,26,98]. Ranks: 2->1, 6->2, 15->3, 20->4, 26->5, 98->6.
arr = [10, 10, 10]
[1, 1, 1]
All elements are equal, so all get rank 1.
arr = [5, 3, 1]
[3, 2, 1]
Sorted: [1,3,5]. Ranks: 1->1, 3->2, 5->3.
Need a Hint?
Edge Cases to Watch
- Puste struktury wejściowe
- Wejścia jednoelementowe
- Duże granice liczbowe
Gotowy do rozwiązania?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Spostrzeżenia i odmiany wywiadu
Podział analizy złożoności
Dlaczego Czas: Directly evaluates all possibilities.
Dlaczego kosmos: Uses standard local memory.
Dlaczego Czas: Optimized paths reduce total operations.
Dlaczego kosmos: May trade memory for speed.
Zoptymalizowany kod rozwiązania w języku Python
Zoptymalizowany kod rozwiązania w języku Python
def replace_with_rank(arr):
# Optimized: Use sorting and a dictionary
if not arr: return []
# Get unique elements sorted
sorted_unique = sorted(list(set(arr)))
# Map each element to its rank
rank_map = {val: i + 1 for i, val in enumerate(sorted_unique)}
# Replace elements with ranks
return [rank_map[x] for x in arr]Kod brutalnej siły (chroniony spoilerami)
Kod brutalnej siły (chroniony spoilerami)
def replace_with_rank(arr):
# Brute force: For each element, count how many smaller unique elements exist
n = len(arr)
ranks = []
for i in range(n):
smaller_unique = set()
for j in range(n):
if arr[j] < arr[i]:
smaller_unique.add(arr[j])
ranks.append(len(smaller_unique) + 1)
return ranksAlgorithm Pattern Checklist
When dealing with Arrays data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Obowiązują standardowe właściwości problemu Arrays.
Powiązane pytania
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Pętle Pythona
Dowiedz się, jak używać pętli Pythona do iteracji danych. Opanuj pętle for, pętle while, przerywaj, kontynuuj i pętluj najlepsze praktyki dzięki interaktywnym przykładom.
Jak zamienić znaki w ciągu w Pythonie
Dowiedz się, jak zamieniać znaki lub podciągi w ciągach Pythona. Opanuj metodę zamiany(), limity zliczania i używanie tłumaczenia dla wielu znaków.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra Ruby: skrypty, struktury internetowe i filozofia
Porównaj Pythona i Ruby. Poznaj subtelne różnice w ich filozofii, elegancji składni, frameworkach internetowych (Djangovs Rails) i stylach wykonania.