LeetCode 371: İki Tam Sayının Toplamı (Python ile Çözüm)
Bu yazıda, LeetCode platformundaki 371. problem olan “İki Tam Sayının Toplamı” problemini ele alacağız. Problem, toplama operatörünü kullanmadan iki tam sayının toplamını bulmayı gerektiriyor. Bu, bitsel işlemler (bitwise operations) kullanarak çözülebilen ilginç bir problemdir. Öncelikle problemi daha iyi anlamak için sorunun detaylarına inelim. Ardından, Python kullanarak adım adım çözümü gerçekleştireceğiz.
Problem Tanımı
Problem, toplama operatörünü (+) kullanmadan iki tam sayının toplamını bulmamızı istiyor. Bu, ilk bakışta zor gibi görünse de, bitsel işlemler yardımıyla oldukça elegant bir şekilde çözülebilir. Bu yaklaşımın temel mantığı, sayıların ikili (binary) gösterimlerini kullanarak toplama işlemini simüle etmektir.
Çözüm Yöntemi: Bitsel İşlemler
İki sayıyı toplamak için bitsel işlemlerden & (ve), ^ (özel veya – XOR), ve << (sol kaydırma) operatörlerini kullanacağız. Öncelikle, sayıların ikili gösterimlerini ele alalım. Toplama işlemi, iki sayının karşılık gelen bitlerinin toplanmasıyla gerçekleştirilir. Eğer iki bitin toplamı 1'den büyükse, elde (carry) oluşur. Bu elde, sonraki bitlerin toplamasına eklenir.
Bu işlemi adım adım gerçekleştirmek için aşağıdaki algoritmayı kullanabiliriz:
- a & b: İki sayının bitsel ve işlemi, elde edilen bitleri verir.
- a ^ b: İki sayının bitsel özel veya işlemi, elde hariç toplamı verir.
- (a & b) << 1: Elde edilen bitler bir pozisyon sola kaydırılır.
- Yeni ‘a’ ve ‘b’ değerlerini, (a ^ b) ve ((a & b) << 1) olarak güncelleriz. Bu adımları, elde (a & b) sıfır olana kadar tekrarlarız.
Python Kod Örneği
def getSum(a: int, b: int) -> int:
"""
İki tam sayının toplamını toplama operatörü kullanmadan hesaplar.
"""
while b != 0:
carry = a & b
a = a ^ b
b = (carry) << 1
return a
Bu kod, yukarıda açıklanan algoritmayı doğrudan uygular. while döngüsü, elde bitleri (carry) sıfır olana kadar devam eder. Döngü bittiğinde, a değişkeni iki sayının toplamını içerir.
Sonuç
Bu makalede, LeetCode'un 371. sorusunu, Python programlama dili ve bitsel işlemler kullanarak nasıl çözebileceğinizi detaylı bir şekilde açıkladık. Bu yöntem, toplama operatörünü kullanmadan iki sayıyı toplamanın etkili bir yolunu sunar. Umarım bu makale, bu zorlu problemi anlamanıza ve çözmenize yardımcı olmuştur. Daha fazla programlama ve algoritma içeriği için fatihsoysal.com sitesini ziyaret edebilirsiniz.
Ek kaynaklar için şu bağlantılara göz atabilirsiniz:
#Etiketler: LeetCode, Python, İki Tam Sayının Toplamı, Bitsel İşlemler, Algoritma, Programlama, Kodlama, Çözüm, Fatih Soysal, leetcode 371
