Python ile Arka Arkaya Gelen En Uzun Artan Alt Diziyi Bulma
Python kullanarak örnek algoritma sorularını çözdüğümüz serimizin on dördüncü sorusuna geçelim:
- Bir dizi içerisinde sadece bir kez kullanılan ilk elemanı bulma:
- Örnek girdi: [1, 2, 2, 3, 4, 1, 2, 3, 4, 5]
- Örnek çıktı: [1, 2, 3, 4, 5]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
def en_uzun_artan_dizi(dizi): if not dizi: return [] mevcut_dizi = [dizi[0]] en_uzun_dizi = mevcut_dizi[:] for i in range(1, len(dizi)): if dizi[i] > dizi[i - 1]: mevcut_dizi.append(dizi[i]) if len(mevcut_dizi) > len(en_uzun_dizi): en_uzun_dizi = mevcut_dizi[:] else: mevcut_dizi = [dizi[i]] return en_uzun_dizi # Örnek kullanım: giris_dizi = [1, 2, 2, 3, 4, 1, 2, 3, 4, 5] cikis = en_uzun_artan_dizi(giris_dizi) print("Dizi:", cikis) # [1, 2, 3, 4, 5] |
Yukarıdaki en_uzun_artan_dizi
isimli fonksiyon, bir diziyi parametre olarak alıp bu dizideki en uzun artan alt diziyi döndürmek üzere tasarlanmıştır.
Fonksiyon başladığında, öncelikle dizi boş mu diye kontrol eder. Eğer dizi boşsa, fonksiyon hemen boş bir dizi döndürerek çalışmasını sonlandırır.
Ardından, “mevcut_dizi
” adında bir değişken tanımlanır. Bu değişken, şu anki artan dizi olarak düşünülebilir. Başlangıç olarak bu değişkene dizinin ilk elemanı atanır. Aynı değer, “en_uzun_dizi
” adında başka bir değişkene de kopyalanır. Bu ikinci değişken, şimdiye kadar bulunan en uzun artan dizi olarak kullanılacaktır.
Sonrasında for döngüsü başlar. Bu döngü, dizinin ikinci elemanından başlayarak son elemanına kadar devam eder. Döngü içinde, eğer şu anki eleman bir öncekinden büyükse, bu eleman “mevcut_dizi
“ye eklenir. Eğer “mevcut_dizi
“, şimdiye kadarki “en_uzun_dizi
“den daha uzunsa, “en_uzun_dizi
” güncellenir. Eğer şu anki eleman bir öncekinden büyük değilse, “mevcut_dizi
” sıfırlanarak sadece şu anki elemanla baştan oluşturulur.
Döngü sona erdikten sonra, “en_uzun_dizi
” döndürülür. Bu, fonksiyonun sonucudur ve en uzun artan alt diziyi temsil eder. Kodu çalıştırmak için: Trinket