{"id":33160,"date":"2025-10-30T11:31:43","date_gmt":"2025-10-30T08:31:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/"},"modified":"2025-10-30T11:31:43","modified_gmt":"2025-10-30T08:31:43","slug":"leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/","title":{"rendered":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi"},"content":{"rendered":"<p><body><\/p>\n<style>\n        \/* Genel stil ayarlar\u0131 *\/\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            line-height: 1.6;\n            color: #333;\n            max-width: 900px;\n            margin: 0 auto;\n            padding: 20px;\n            background-color: #f9f9f9;\n        }<\/p>\n<p>        h2, h3 {\n            color: #2c3e50;\n            margin-top: 30px;\n            margin-bottom: 15px;\n            padding-bottom: 5px;\n            border-bottom: 2px solid #3498db;\n        }<\/p>\n<p>        h2 {\n            font-size: 1.8em;\n        }<\/p>\n<p>        h3 {\n            font-size: 1.4em;\n            border-bottom: 1px dashed #7f8c8d;\n        }<\/p>\n<p>        p {\n            margin-bottom: 15px;\n        }<\/p>\n<p>        code {\n            font-family: 'Consolas', 'Monaco', monospace;\n            background-color: #ecf0f1;\n            padding: 2px 4px;\n            border-radius: 3px;\n            color: #c0392b;\n        }<\/p>\n<p>        pre {\n            background-color: #2d2d2d;\n            color: #f8f8f2;\n            padding: 15px;\n            border-radius: 5px;\n            overflow-x: auto;\n            margin-bottom: 20px;\n        }<\/p>\n<p>        pre code {\n            background-color: transparent;\n            color: #f8f8f2;\n            padding: 0;\n            border-radius: 0;\n        }<\/p>\n<p>        ul {\n            list-style-type: disc;\n            margin-left: 20px;\n            margin-bottom: 15px;\n        }<\/p>\n<p>        ol {\n            list-style-type: decimal;\n            margin-left: 20px;\n            margin-bottom: 15px;\n        }<\/p>\n<p>        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-bottom: 20px;\n        }<\/p>\n<p>        th, td {\n            border: 1px solid #ddd;\n            padding: 8px;\n            text-align: left;\n        }<\/p>\n<p>        th {\n            background-color: #f2f2f2;\n            color: #555;\n        }<\/p>\n<p>        .expert-tip {\n            background-color: #d9edf7;\n            border-left: 5px solid #3498db;\n            padding: 15px;\n            margin: 20px 0;\n            border-radius: 4px;\n            color: #31708f;\n            font-style: italic;\n        }<\/p>\n<p>        .faq-item {\n            margin-bottom: 15px;\n            padding: 10px;\n            background-color: #e8f6f3;\n            border-left: 4px solid #16a085;\n            border-radius: 3px;\n        }<\/p>\n<p>        .faq-question {\n            font-weight: bold;\n            color: #16a085;\n        }<\/p>\n<p>        .faq-answer {\n            margin-top: 5px;\n            color: #333;\n        }<\/p>\n<p>        \/* Mobil uyumluluk i\u00e7in medya sorgular\u0131 *\/\n        @media (max-width: 768px) {\n            body {\n                padding: 10px;\n            }<\/p>\n<p>            h2 {\n                font-size: 1.5em;\n            }<\/p>\n<p>            h3 {\n                font-size: 1.2em;\n            }<\/p>\n<p>            pre {\n                padding: 10px;\n                font-size: 0.9em;\n            }<\/p>\n<p>            .expert-tip {\n                padding: 10px;\n                font-size: 0.95em;\n            }\n        }<\/p>\n<p>        @media (max-width: 480px) {\n            h2 {\n                font-size: 1.3em;\n            }<\/p>\n<p>            h3 {\n                font-size: 1.1em;\n            }<\/p>\n<p>            pre {\n                white-space: pre-wrap; \/* Uzun sat\u0131rlar\u0131 otomatik olarak sarar *\/\n                word-wrap: break-word;\n            }\n        }\n    <\/style>\n<p>LeetCode&#8217;da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan &#8220;Add Two Numbers&#8221; (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.<\/p>\n<p>Bilgisayarlar\u0131n d\u00fcnyas\u0131nda say\u0131larla \u00e7al\u0131\u015fmak temel bir i\u015flemdir. Ancak, standart veri tiplerinin temsil edebilece\u011fi say\u0131 b\u00fcy\u00fckl\u00fcklerinin bir s\u0131n\u0131r\u0131 vard\u0131r. \u00d6rne\u011fin, 64-bit bir tam say\u0131 (long long) bile belli bir de\u011fere kadar say\u0131y\u0131 saklayabilir. Peki ya milyonlarca basama\u011f\u0131 olan devasa say\u0131lar\u0131 toplaman\u0131z gerekirse ne yapars\u0131n\u0131z? \u0130\u015fte LeetCode #2 problemi tam olarak bu senaryoya bir \u00e7\u00f6z\u00fcm sunar ve sizi bu t\u00fcr b\u00fcy\u00fck say\u0131lar\u0131 efektif bir \u015fekilde i\u015flemek i\u00e7in ba\u011fl\u0131 listeler gibi veri yap\u0131lar\u0131n\u0131 kullanmaya iter.<\/p>\n<p>Bu problemde, her bir basama\u011f\u0131 ayr\u0131 bir ba\u011fl\u0131 liste d\u00fc\u011f\u00fcm\u00fcnde ters s\u0131rada saklanm\u0131\u015f iki adet bo\u015f olmayan say\u0131y\u0131 toplaman\u0131z istenir. \u00d6rne\u011fin, <code>(2 -> 4 -> 3)<\/code> listesi 342 say\u0131s\u0131n\u0131, <code>(5 -> 6 -> 4)<\/code> listesi ise 465 say\u0131s\u0131n\u0131 temsil eder. Bu iki say\u0131n\u0131n toplam\u0131 olan 807, <code>(7 -> 0 -> 8)<\/code> olarak temsil edilmelidir. Burada dikkat edilmesi gereken en \u00f6nemli nokta, basamaklar\u0131n ters s\u0131rada olmas\u0131d\u0131r. Yani, ba\u011fl\u0131 listenin ba\u015f\u0131 say\u0131n\u0131n birler basama\u011f\u0131n\u0131, bir sonraki d\u00fc\u011f\u00fcm onlar basama\u011f\u0131n\u0131 ve bu \u015fekilde devam eder.<\/p>\n<p>Bu problemin \u00f6nemi sadece bir LeetCode sorusunu \u00e7\u00f6zmekle s\u0131n\u0131rl\u0131 de\u011fildir; bilgisayar bilimlerinde &#8220;keyfi hassasiyet aritmeti\u011fi&#8221; (arbitrary precision arithmetic) ad\u0131 verilen daha geni\u015f bir kavram\u0131n temelini olu\u015fturur. Finansal sistemlerde, kriptografide, bilimsel hesaplamalarda veya uzay ara\u015ft\u0131rmalar\u0131nda, standart veri tiplerinin kapasitesini a\u015fan hassasiyete veya b\u00fcy\u00fckl\u00fc\u011fe sahip say\u0131larla \u00e7al\u0131\u015fmak s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir durumdur. \u0130\u015fte bu t\u00fcr durumlarda, say\u0131lar\u0131 basamak basamak temsil etmek ve bu basamaklar \u00fczerinde i\u015flem yapmak hayati \u00f6nem ta\u015f\u0131r. Ba\u011fl\u0131 listeler, bu dinamik b\u00fcy\u00fckl\u00fckteki say\u0131lar\u0131 temsil etmek i\u00e7in do\u011fal ve esnek bir yol sunar, zira ihtiyaca g\u00f6re d\u00fc\u011f\u00fcmler ekleyebilir veya \u00e7\u0131karabilirsiniz. B\u00f6ylece, bellekte sabit bir yer ay\u0131rma k\u0131s\u0131tlamas\u0131na tak\u0131lmadan istedi\u011finiz kadar b\u00fcy\u00fck say\u0131larla i\u015flem yapabilirsiniz.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryosu: B\u00fcy\u00fck Say\u0131lar\u0131n Y\u00f6netimi<\/h3>\n<p>G\u00fcn\u00fcm\u00fczde finans sekt\u00f6r\u00fcndeki algoritmik ticaret sistemlerini veya kripto para birimlerinin blok zincir teknolojisini d\u00fc\u015f\u00fcn\u00fcn. Bu sistemler, y\u00fcksek hassasiyet gerektiren milyarlarca veya trilyonlarca basamakl\u0131 i\u015flemleri y\u00f6netmek zorundad\u0131r. \u00d6rne\u011fin, bir bankan\u0131n faiz hesaplamalar\u0131, kur farklar\u0131 veya d\u00f6viz kuru i\u015flemleri \u00e7ok k\u00fc\u00e7\u00fck ondal\u0131k de\u011ferlere kadar hassas olmak zorundad\u0131r. Standart <code>double<\/code> veya <code>float<\/code> tipleri yuvarlama hatalar\u0131na neden olabilirken, ba\u011fl\u0131 listelerle temsil edilen say\u0131lar, her bir basama\u011f\u0131 ayr\u0131 ayr\u0131 ele alarak bu t\u00fcr hatalar\u0131 ortadan kald\u0131r\u0131r. Bilimsel sim\u00fclasyonlarda veya astronomik hesaplamalarda da benzer \u015fekilde \u00e7ok b\u00fcy\u00fck veya \u00e7ok k\u00fc\u00e7\u00fck say\u0131lar\u0131n hassas bir \u015fekilde temsil edilmesi ve \u00fczerinde i\u015flem yap\u0131lmas\u0131 esast\u0131r. Bu t\u00fcr senaryolarda, LeetCode #2&#8217;nin arkas\u0131ndaki mant\u0131k, bu karma\u015f\u0131k ve kritik hesaplamalar i\u00e7in temel bir yap\u0131 ta\u015f\u0131 sa\u011flar.<\/p>\n<h2>Temel Kavramlar: Ba\u011fl\u0131 Listeler ve D\u00fc\u011f\u00fcmler Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<p>LeetCode #2 problemini etkili bir \u015fekilde \u00e7\u00f6zebilmek i\u00e7in ba\u011fl\u0131 listelerin (Linked Lists) temel yap\u0131s\u0131n\u0131 ve i\u015fleyi\u015fini iyi anlamak olduk\u00e7a \u00f6nemlidir. Ba\u011fl\u0131 liste, do\u011frusal bir veri yap\u0131s\u0131d\u0131r; ancak dizilerden farkl\u0131 olarak, elemanlar bellekte ard\u0131\u015f\u0131k olarak depolanmaz. Bunun yerine, her eleman, &#8220;d\u00fc\u011f\u00fcm&#8221; (node) ad\u0131 verilen ayr\u0131 bir nesne olarak saklan\u0131r ve bir sonraki eleman\u0131n bellek adresini (bir &#8220;i\u015faret\u00e7i&#8221; veya &#8220;referans&#8221;) i\u00e7erir. Bu yap\u0131, ba\u011fl\u0131 listeleri dinamik boyutlu ve esnek k\u0131lar.<\/p>\n<p>Her ba\u011fl\u0131 liste d\u00fc\u011f\u00fcm\u00fc tipik olarak iki ana b\u00f6l\u00fcmden olu\u015fur:<\/p>\n<ul>\n<li><strong>De\u011fer (<code>val<\/code>):<\/strong> D\u00fc\u011f\u00fcm\u00fcn depolad\u0131\u011f\u0131 ger\u00e7ek veri. Bu problemde, bu de\u011fer say\u0131n\u0131n bir basama\u011f\u0131n\u0131 temsil eder (0-9 aras\u0131 bir say\u0131).<\/li>\n<li><strong>Sonraki D\u00fc\u011f\u00fcm \u0130\u015faret\u00e7isi (<code>next<\/code>):<\/strong> Listenin bir sonraki d\u00fc\u011f\u00fcm\u00fcne referans veren bir i\u015faret\u00e7i. E\u011fer d\u00fc\u011f\u00fcm listenin son eleman\u0131ysa, bu i\u015faret\u00e7i genellikle <code>null<\/code> veya <code>None<\/code> de\u011ferini al\u0131r.<\/li>\n<\/ul>\n<p>LeetCode #2 ba\u011flam\u0131nda, her ba\u011fl\u0131 liste bir say\u0131y\u0131 temsil ederken, her d\u00fc\u011f\u00fcm bu say\u0131n\u0131n bir basama\u011f\u0131n\u0131 saklar. Problemin spesifikasyonuna g\u00f6re, basamaklar tersten s\u0131ralanm\u0131\u015ft\u0131r. Yani, ba\u011fl\u0131 listenin ba\u015f\u0131 (<code>head<\/code>) say\u0131n\u0131n birler basama\u011f\u0131n\u0131, <code>head.next<\/code> onlar basama\u011f\u0131n\u0131 ve bu \u015fekilde devam eder. Bu ters s\u0131ra, toplama i\u015flemini geleneksel elden toplama y\u00f6ntemine \u00e7ok benzer hale getirir, \u00e7\u00fcnk\u00fc birler basama\u011f\u0131ndan ba\u015flayarak sola do\u011fru ilerleriz. Bu yakla\u015f\u0131m, say\u0131lar\u0131n basamaklar\u0131 \u00fczerinde do\u011frudan i\u015flem yapmam\u0131z\u0131 sa\u011flayarak b\u00fcy\u00fck say\u0131lar\u0131n y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>LeetCode #2 Problem Tan\u0131m\u0131: Tam Olarak Ne \u0130steniyor?<\/h3>\n<p>LeetCode&#8217;daki tam problem tan\u0131m\u0131 \u015fu \u015fekildedir: &#8220;S\u0131ras\u0131yla bo\u015f olmayan iki ba\u011fl\u0131 liste olarak temsil edilen iki negatif olmayan tam say\u0131y\u0131 toplay\u0131n. Say\u0131lar\u0131n basamaklar\u0131 ters s\u0131rada saklan\u0131r ve her d\u00fc\u011f\u00fcm yaln\u0131zca tek bir basamak i\u00e7erir. \u0130ki say\u0131n\u0131n toplam\u0131 olan yeni bir ba\u011fl\u0131 liste d\u00f6nd\u00fcr\u00fcn. \u0130ki say\u0131n\u0131n da ba\u015ftaki s\u0131f\u0131rlar i\u00e7ermedi\u011fini varsayabilirsiniz, ancak say\u0131n\u0131n kendisi 0 olabilir.&#8221; \u00d6rne\u011fin, <code>l1 = [2,4,3]<\/code> ve <code>l2 = [5,6,4]<\/code> girdileri i\u00e7in \u00e7\u0131kt\u0131 <code>[7,0,8]<\/code> olmal\u0131d\u0131r. Bu, 342 + 465 = 807 anlam\u0131na gelir. Bu ters s\u0131ra, basamak basamak toplamay\u0131, t\u0131pk\u0131 ilkokulda \u00f6\u011frendi\u011fimiz gibi, sa\u011fdan sola do\u011fru (yani listede ba\u015ftan sona) yapmam\u0131z\u0131 sa\u011flar, bu da algoritmay\u0131 basitle\u015ftirir.<\/p>\n<h2>\u00c7\u00f6z\u00fcm Yakla\u015f\u0131m\u0131: \u0130ki Ba\u011fl\u0131 Listeyi Ad\u0131m Ad\u0131m Nas\u0131l Toplar\u0131z?<\/h2>\n<p>\u0130ki say\u0131y\u0131 temsil eden ba\u011fl\u0131 listeleri toplarken, temel mant\u0131k asl\u0131nda ilkokulda \u00f6\u011frendi\u011fimiz elden toplama i\u015flemine \u00e7ok benzer. Sa\u011fdan sola do\u011fru (yani ba\u011fl\u0131 listelerde ba\u015ftan sona) basamaklar\u0131 toplar\u0131z ve bir basamak 9&#8217;u a\u015farsa &#8220;elde&#8221; (carry) bir sonraki basama\u011fa aktar\u0131l\u0131r. Bu algoritma, bir d\u00f6ng\u00fc i\u00e7inde, her iki listeyi ayn\u0131 anda veya birinin sonuna ula\u015f\u0131ld\u0131\u011f\u0131nda di\u011ferini tek ba\u015f\u0131na i\u015fleyerek ilerler.<\/p>\n<p>\u00c7\u00f6z\u00fcm i\u00e7in ad\u0131m ad\u0131m bir plan \u015f\u00f6yle olu\u015fturulabilir:<\/p>\n<ol>\n<li><strong>Yard\u0131mc\u0131 (Dummy) D\u00fc\u011f\u00fcm Olu\u015fturma:<\/strong> Toplam\u0131 saklayacak yeni bir ba\u011fl\u0131 liste olu\u015fturmak i\u00e7in bir &#8220;yard\u0131mc\u0131 ba\u015f d\u00fc\u011f\u00fcm&#8221; (<code>dummyHead<\/code>) kullanmak yayg\u0131n ve iyi bir pratikttir. Bu d\u00fc\u011f\u00fcm\u00fcn amac\u0131, ger\u00e7ek toplam listemizin ba\u015flang\u0131c\u0131n\u0131 belirgin bir \u015fekilde i\u015faretlemektir. B\u00f6ylece, toplam listeyi olu\u015ftururken ilk d\u00fc\u011f\u00fcm\u00fc \u00f6zel olarak ele almak zorunda kalmay\u0131z. Daha sonra bu <code>dummyHead<\/code>&#8216;in <code>next<\/code> i\u015faret\u00e7isi, as\u0131l sonu\u00e7 listemizin ba\u015f\u0131 olacakt\u0131r. Ayr\u0131ca, mevcut d\u00fc\u011f\u00fcm\u00fc takip etmek i\u00e7in bir <code>current<\/code> i\u015faret\u00e7isi tutar\u0131z.<\/li>\n<li><strong>Elde De\u011fi\u015fkeni (Carry):<\/strong> Toplama i\u015flemi s\u0131ras\u0131nda olu\u015fan elde de\u011ferini (0 veya 1 olabilir) takip etmek i\u00e7in <code>carry<\/code> ad\u0131nda bir de\u011fi\u015fken tan\u0131mlar\u0131z. Ba\u015flang\u0131\u00e7ta <code>carry<\/code> de\u011feri 0 olacakt\u0131r.<\/li>\n<li><strong>D\u00f6ng\u00fc ile Toplama:<\/strong> \u0130ki listeyi e\u015f zamanl\u0131 olarak veya bir liste bitene kadar d\u00f6ng\u00fc ile gezeriz. D\u00f6ng\u00fc \u015fu ko\u015fullardan biri do\u011fru oldu\u011fu s\u00fcrece devam eder:\n<ul>\n<li>\u0130lk liste (<code>l1<\/code>) hen\u00fcz bitmemi\u015fse.<\/li>\n<li>\u0130kinci liste (<code>l2<\/code>) hen\u00fcz bitmemi\u015fse.<\/li>\n<li><code>carry<\/code> de\u011feri hala 1 ise (yani son bir elde de\u011feri kalm\u0131\u015fsa).<\/li>\n<\/ul>\n<\/li>\n<li><strong>Basamaklar\u0131 Toplama:<\/strong> Her d\u00f6ng\u00fc ad\u0131m\u0131nda, mevcut <code>l1<\/code> ve <code>l2<\/code> d\u00fc\u011f\u00fcmlerinin de\u011ferlerini (e\u011fer null de\u011fillerse) ve mevcut <code>carry<\/code> de\u011ferini toplar\u0131z. E\u011fer bir liste bitmi\u015fse, o listenin de\u011feri olarak 0 kabul edilir. Bu toplam, <code>sum<\/code> ad\u0131nda bir de\u011fi\u015fkende saklan\u0131r.<\/li>\n<li><strong>Yeni Basamak ve Elde Hesaplama:<\/strong> <code>sum<\/code> de\u011ferinden, yeni ba\u011fl\u0131 liste i\u00e7in basama\u011f\u0131 (<code>sum % 10<\/code>) ve bir sonraki ad\u0131m i\u00e7in elde de\u011ferini (<code>sum \/\/ 10<\/code>) hesaplar\u0131z. Yeni basama\u011f\u0131 i\u00e7eren bir d\u00fc\u011f\u00fcm olu\u015fturur ve bunu <code>current<\/code> d\u00fc\u011f\u00fcm\u00fcn\u00fcn <code>next<\/code>&#8216;i olarak ekleriz. Ard\u0131ndan <code>current<\/code> i\u015faret\u00e7isini yeni eklenen bu d\u00fc\u011f\u00fcme kayd\u0131r\u0131r\u0131z.<\/li>\n<li><strong>Liste \u0130\u015faret\u00e7ilerini \u0130lerletme:<\/strong> <code>l1<\/code> ve <code>l2<\/code> i\u015faret\u00e7ilerini, e\u011fer null de\u011fillerse, bir sonraki d\u00fc\u011f\u00fcme ilerletiriz.<\/li>\n<li><strong>Sonu\u00e7 D\u00f6nd\u00fcrme:<\/strong> D\u00f6ng\u00fc bitti\u011finde, <code>dummyHead.next<\/code> bizim arad\u0131\u011f\u0131m\u0131z toplam listeyi d\u00f6nd\u00fcrecektir.<\/li>\n<\/ol>\n<p>Bu yakla\u015f\u0131m, liste uzunluklar\u0131 farkl\u0131 oldu\u011funda bile sorunsuz \u00e7al\u0131\u015f\u0131r, \u00e7\u00fcnk\u00fc biten listenin basamaklar\u0131 i\u00e7in 0 de\u011feri kullan\u0131l\u0131r. Ayr\u0131ca, en son basamaklar topland\u0131ktan sonra bile elde de\u011feri 1 kalm\u0131\u015fsa (\u00f6rne\u011fin 99 + 1 = 100 i\u015fleminde), d\u00f6ng\u00fc bu son eldeyi de yeni bir d\u00fc\u011f\u00fcm olarak ekleyerek do\u011fru sonucu elde etmemizi sa\u011flar. Bu y\u00f6ntem, bilgisayarlar\u0131n b\u00fcy\u00fck say\u0131lar\u0131 manuel toplama y\u00f6ntemine benzer \u015fekilde i\u015flemesini sa\u011flayan zarif ve verimli bir yoldur.<\/p>\n<h3>Algoritman\u0131n Temel Ad\u0131mlar\u0131: Eldeyi Takip Etmek<\/h3>\n<p>Elde (<code>carry<\/code>) de\u011feri, bu algoritman\u0131n kalbidir. Her basamak topland\u0131\u011f\u0131nda, e\u011fer toplam 9&#8217;dan b\u00fcy\u00fckse, elde de\u011feri 1 olur ve bu de\u011fer bir sonraki basamak toplam\u0131na eklenir. \u00d6rne\u011fin, <code>3 + 4 = 7<\/code> oldu\u011funda <code>carry<\/code> 0&#8217;d\u0131r. Ancak, <code>6 + 8 = 14<\/code> oldu\u011funda, yeni basamak 4 olur ve <code>carry<\/code> 1 olarak bir sonraki basama\u011fa aktar\u0131l\u0131r. Bu <code>carry<\/code>&#8216;nin do\u011fru bir \u015fekilde y\u00f6netilmesi, sonucun do\u011frulu\u011fu i\u00e7in kritik \u00f6neme sahiptir. D\u00f6ng\u00fc, t\u00fcm basamaklar i\u015flense bile, <code>carry<\/code> hala 1 ise devam etmelidir; bu, toplama sonucunda orijinal listelerden daha uzun bir liste olu\u015fabilece\u011fi anlam\u0131na gelir (\u00f6rne\u011fin 99 + 1 = 100, burada 100, iki basamakl\u0131 say\u0131lardan daha fazla basama\u011fa sahiptir). Bu son eldeyi eklemek, do\u011fru sonucu garantiler.<\/p>\n<h2>Uygulamal\u0131 Kod: LeetCode #2 \u00c7\u00f6z\u00fcm\u00fc Python ile<\/h2>\n<p>\u015eimdi yukar\u0131da bahsetti\u011fimiz \u00e7\u00f6z\u00fcm yakla\u015f\u0131m\u0131n\u0131 Python koduyla somutla\u015ft\u0131ral\u0131m. \u00d6ncelikle, ba\u011fl\u0131 liste d\u00fc\u011f\u00fcmlerini temsil edecek <code>ListNode<\/code> s\u0131n\u0131f\u0131m\u0131z\u0131 tan\u0131mlamam\u0131z gerekiyor. Ard\u0131ndan, <code>addTwoNumbers<\/code> fonksiyonunu ad\u0131m ad\u0131m olu\u015fturaca\u011f\u0131z. Python, ba\u011fl\u0131 liste d\u00fc\u011f\u00fcmleri i\u00e7in referanslar\u0131 do\u011fal bir \u015fekilde y\u00f6netir, bu da kod yaz\u0131m\u0131n\u0131 olduk\u00e7a sezgisel hale getirir.<\/p>\n<pre><code>\nclass ListNode:\n    def __init__(self, val=0, next=None):\n        self.val = val\n        self.next = next\n\nclass Solution:\n    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:\n        # Toplam listesinin ba\u015flang\u0131c\u0131n\u0131 i\u015faretlemek i\u00e7in bir dummy (sahte) ba\u015f d\u00fc\u011f\u00fcm olu\u015ftur.\n        # Bu, ilk d\u00fc\u011f\u00fcm\u00fc \u00f6zel olarak ele alma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r.\n        dummyHead = ListNode(0)\n        \n        # Mevcut d\u00fc\u011f\u00fcm\u00fc takip etmek i\u00e7in bir i\u015faret\u00e7i. Ba\u015flang\u0131\u00e7ta dummyHead'i g\u00f6sterir.\n        current = dummyHead\n        \n        # Elde de\u011ferini saklamak i\u00e7in de\u011fi\u015fken.\n        carry = 0\n\n        # l1, l2 veya elde de\u011feri 0'dan b\u00fcy\u00fck oldu\u011fu s\u00fcrece d\u00f6ng\u00fcy\u00fc s\u00fcrd\u00fcr.\n        # Bu, t\u00fcm basamaklar\u0131n ve son elde de\u011ferinin i\u015flenmesini sa\u011flar.\n        while l1 is not None or l2 is not None or carry != 0:\n            # l1'den mevcut basama\u011f\u0131 al. E\u011fer l1 bitmi\u015fse (None), 0 kullan.\n            val1 = l1.val if l1 is not None else 0\n            \n            # l2'den mevcut basama\u011f\u0131 al. E\u011fer l2 bitmi\u015fse (None), 0 kullan.\n            val2 = l2.val if l2 is not None else 0\n\n            # Mevcut basamaklar\u0131 ve eldeyi topla.\n            total_sum = val1 + val2 + carry\n\n            # Yeni elde de\u011ferini hesapla (toplam\u0131n 10'a b\u00f6l\u00fcm\u00fcn\u00fcn tam k\u0131sm\u0131).\n            carry = total_sum \/\/ 10\n            \n            # Yeni d\u00fc\u011f\u00fcm\u00fcn de\u011ferini hesapla (toplam\u0131n 10'a b\u00f6l\u00fcm\u00fcnden kalan).\n            digit = total_sum % 10\n\n            # Yeni basamak de\u011feriyle bir d\u00fc\u011f\u00fcm olu\u015ftur ve onu mevcut d\u00fc\u011f\u00fcm\u00fcn 'next'i yap.\n            current.next = ListNode(digit)\n            \n            # Mevcut i\u015faret\u00e7iyi yeni olu\u015fturulan d\u00fc\u011f\u00fcme ilerlet.\n            current = current.next\n\n            # l1 ve l2 i\u015faret\u00e7ilerini bir sonraki d\u00fc\u011f\u00fcme ilerlet (e\u011fer mevcutlarsa).\n            if l1 is not None:\n                l1 = l1.next\n            if l2 is not None:\n                l2 = l2.next\n        \n        # Dummy ba\u015f d\u00fc\u011f\u00fcm\u00fcn bir sonraki d\u00fc\u011f\u00fcm\u00fcn\u00fc d\u00f6nd\u00fcr, bu ger\u00e7ek toplam listesidir.\n        return dummyHead.next\n    <\/pre>\n<p><\/code><\/p>\n<h3>\u00d6rnek Bir Uygulama: Kodu \u00c7al\u0131\u015ft\u0131rmak<\/h3>\n<p>Yukar\u0131daki kodu bir \u00f6rnekle test edelim. Diyelim ki \u015fu say\u0131lar\u0131 toplamak istiyoruz:<\/p>\n<ul>\n<li><code>l1<\/code>: 342 (<code>2 -> 4 -> 3<\/code> olarak temsil edilir)<\/li>\n<li><code>l2<\/code>: 465 (<code>5 -> 6 -> 4<\/code> olarak temsil edilir)<\/li>\n<\/ul>\n<p>Beklenen sonu\u00e7: 807 (<code>7 -> 0 -> 8<\/code> olarak temsil edilir)<\/p>\n<p>Ad\u0131m ad\u0131m \u00e7al\u0131\u015fmay\u0131 inceleyelim:<\/p>\n<ol>\n<li><strong>Ba\u015flang\u0131\u00e7:<\/strong> <code>dummyHead = ListNode(0)<\/code>, <code>current = dummyHead<\/code>, <code>carry = 0<\/code>.<\/li>\n<li><strong>1. \u0130terasyon (Birler Basama\u011f\u0131):<\/strong>\n<ul>\n<li><code>val1 = 2<\/code>, <code>val2 = 5<\/code>.<\/li>\n<li><code>total_sum = 2 + 5 + 0 = 7<\/code>.<\/li>\n<li><code>carry = 7 \/\/ 10 = 0<\/code>.<\/li>\n<li><code>digit = 7 % 10 = 7<\/code>.<\/li>\n<li><code>current.next = ListNode(7)<\/code>. <code>current<\/code> \u015fimdi <code>7<\/code> d\u00fc\u011f\u00fcm\u00fcn\u00fc g\u00f6sterir.<\/li>\n<li><code>l1<\/code> 4'e, <code>l2<\/code> 6'ya ilerler.<\/li>\n<\/ul>\n<\/li>\n<li><strong>2. \u0130terasyon (Onlar Basama\u011f\u0131):<\/strong>\n<ul>\n<li><code>val1 = 4<\/code>, <code>val2 = 6<\/code>.<\/li>\n<li><code>total_sum = 4 + 6 + 0 = 10<\/code>.<\/li>\n<li><code>carry = 10 \/\/ 10 = 1<\/code>.<\/li>\n<li><code>digit = 10 % 10 = 0<\/code>.<\/li>\n<li><code>current.next = ListNode(0)<\/code>. <code>current<\/code> \u015fimdi <code>0<\/code> d\u00fc\u011f\u00fcm\u00fcn\u00fc g\u00f6sterir.<\/li>\n<li><code>l1<\/code> 3'e, <code>l2<\/code> 4'e ilerler.<\/li>\n<\/ul>\n<\/li>\n<li><strong>3. \u0130terasyon (Y\u00fczler Basama\u011f\u0131):<\/strong>\n<ul>\n<li><code>val1 = 3<\/code>, <code>val2 = 4<\/code>.<\/li>\n<li><code>total_sum = 3 + 4 + 1 = 8<\/code> (\u00f6nceki iterasyondan gelen elde 1).<\/li>\n<li><code>carry = 8 \/\/ 10 = 0<\/code>.<\/li>\n<li><code>digit = 8 % 10 = 8<\/code>.<\/li>\n<li><code>current.next = ListNode(8)<\/code>. <code>current<\/code> \u015fimdi <code>8<\/code> d\u00fc\u011f\u00fcm\u00fcn\u00fc g\u00f6sterir.<\/li>\n<li><code>l1<\/code> <code>None<\/code>'a, <code>l2<\/code> <code>None<\/code>'a ilerler.<\/li>\n<\/ul>\n<\/li>\n<li><strong>D\u00f6ng\u00fc Sonu:<\/strong> Hem <code>l1<\/code> hem de <code>l2<\/code> <code>None<\/code> oldu, <code>carry<\/code> 0 oldu. D\u00f6ng\u00fc biter.<\/li>\n<li><strong>Sonu\u00e7:<\/strong> <code>dummyHead.next<\/code> d\u00f6nd\u00fcr\u00fcl\u00fcr, bu da <code>7 -> 0 -> 8<\/code> listesini temsil eder.<\/li>\n<\/ol>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: <code>dummyHead<\/code> kullanmak, ba\u011fl\u0131 liste problemlerinde ilk d\u00fc\u011f\u00fcm\u00fc \u00f6zel olarak ele alma karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu sayede kodunuz daha temiz ve hataya daha az yatk\u0131n olur. Listeyi olu\u015ftururken her zaman bir <code>current<\/code> i\u015faret\u00e7isi ile ilerlemeye odaklanabilirsiniz.\n    <\/div>\n<h2>Performans ve Optimizasyon: Daha Etkin \u00c7\u00f6z\u00fcmler M\u00fcmk\u00fcn M\u00fc?<\/h2>\n<p>Algoritmik problemlerin \u00e7\u00f6z\u00fcm\u00fcnde kodun do\u011frulu\u011fu kadar, performans analizi de b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. \u00c7\u00f6z\u00fcm\u00fcm\u00fcz\u00fcn zaman ve uzay karma\u015f\u0131kl\u0131\u011f\u0131 (Time and Space Complexity) bu ba\u011flamda incelenmelidir. LeetCode #2 problemindeki ba\u011fl\u0131 listelerle toplama \u00e7\u00f6z\u00fcm\u00fc, verilen k\u0131s\u0131tlamalar alt\u0131nda olduk\u00e7a verimli bir yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Zaman ve Uzay Karma\u015f\u0131kl\u0131\u011f\u0131 Analizi<\/h3>\n<ul>\n<li><strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131 (Time Complexity):<\/strong> Algoritma, her iki ba\u011fl\u0131 listeyi de ba\u015ftan sona tek bir ge\u00e7i\u015fte i\u015fler. En k\u00f6t\u00fc durumda, her iki listedeki t\u00fcm d\u00fc\u011f\u00fcmlerden (basamaklardan) bir kez ge\u00e7eriz. E\u011fer <code>l1<\/code>'in uzunlu\u011fu <code>m<\/code> ve <code>l2<\/code>'nin uzunlu\u011fu <code>n<\/code> ise, d\u00f6ng\u00fc <code>max(m, n)<\/code> defa \u00e7al\u0131\u015facakt\u0131r. Her iterasyonda sabit say\u0131da i\u015flem (toplama, b\u00f6lme, mod alma, yeni d\u00fc\u011f\u00fcm olu\u015fturma) yap\u0131l\u0131r. Dolay\u0131s\u0131yla, zaman karma\u015f\u0131kl\u0131\u011f\u0131 <code>O(max(m, n))<\/code>'dir. Bu, listelerin uzunlu\u011fu artt\u0131k\u00e7a \u00e7al\u0131\u015fma s\u00fcresinin do\u011frusal olarak artaca\u011f\u0131 anlam\u0131na gelir ve optimaldir \u00e7\u00fcnk\u00fc t\u00fcm basamaklar\u0131 en az bir kez g\u00f6rmek zorunday\u0131z.<\/li>\n<li><strong>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131 (Space Complexity):<\/strong> \u00c7\u00f6z\u00fcm\u00fcm\u00fcz, iki say\u0131n\u0131n toplam\u0131n\u0131 tutmak i\u00e7in yeni bir ba\u011fl\u0131 liste olu\u015fturur. Bu yeni listenin uzunlu\u011fu, en fazla <code>max(m, n) + 1<\/code> olabilir (son bir elde durumu i\u00e7in). Bu nedenle, olu\u015fturulan yeni d\u00fc\u011f\u00fcm say\u0131s\u0131 listelerin uzunlu\u011funa ba\u011fl\u0131d\u0131r. Uzay karma\u015f\u0131kl\u0131\u011f\u0131 da <code>O(max(m, n))<\/code>'dir. Bu da optimaldir, \u00e7\u00fcnk\u00fc toplam sonucunu saklamak i\u00e7in bu kadar alana ihtiyac\u0131m\u0131z vard\u0131r.<\/li>\n<\/ul>\n<p>Bu problem i\u00e7in daha etkin bir \u00e7\u00f6z\u00fcm bulmak zordur \u00e7\u00fcnk\u00fc zaten t\u00fcm basamaklar\u0131 okumak ve toplam basamaklar\u0131 depolamak zorunday\u0131z. Baz\u0131 dillerde (Python gibi) tamsay\u0131lar keyfi hassasiyeti destekler, yani say\u0131 ne kadar b\u00fcy\u00fck olursa olsun direkt toplama i\u015flemi yap\u0131labilir. Ancak LeetCode #2, bu \u00f6zelli\u011fi kullanarak problemi \u00e7\u00f6zmemizi istemez; ba\u011fl\u0131 listelerle algoritmay\u0131 kendimiz uygulamam\u0131z\u0131 bekler. Bu nedenle, ba\u011fl\u0131 liste d\u00fc\u011f\u00fcmlerini say\u0131lara d\u00f6n\u00fc\u015ft\u00fcrmek, toplamak ve sonra tekrar ba\u011fl\u0131 listeye d\u00f6n\u00fc\u015ft\u00fcrmek gibi yakla\u015f\u0131mlar genellikle hem karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131r\u0131r hem de \u00e7ok b\u00fcy\u00fck say\u0131lar i\u00e7in bellekte a\u015f\u0131r\u0131 yer kaplayabilir veya performans sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<p>Performans a\u00e7\u0131s\u0131ndan dikkat edilmesi gereken tek nokta, d\u00f6ng\u00fc i\u00e7indeki gereksiz i\u015flemlerden ka\u00e7\u0131nmakt\u0131r. Mevcut \u00e7\u00f6z\u00fcm, her iterasyonda yaln\u0131zca temel aritmetik i\u015flemleri ve referans g\u00fcncellemelerini i\u00e7erdi\u011fi i\u00e7in zaten olduk\u00e7a verimlidir. Bu ba\u011flamda, kodumuz verilen k\u0131s\u0131tlamalar alt\u0131nda pratik olarak en iyi performans\u0131 sunar.<\/p>\n<h2>Mobil Uyumlu HTML Sunumu: Kod Bloklar\u0131n\u0131z\u0131 Nas\u0131l G\u00f6sterirsiniz?<\/h2>\n<p>Teknik makalelerde kod bloklar\u0131, i\u00e7eri\u011fin anla\u015f\u0131lmas\u0131 i\u00e7in hayati \u00f6neme sahiptir. Ancak farkl\u0131 cihazlarda, \u00f6zellikle k\u00fc\u00e7\u00fck ekranl\u0131 mobil cihazlarda, bu kod bloklar\u0131n\u0131n okunabilirli\u011fini sa\u011flamak kritik bir tasar\u0131m karar\u0131d\u0131r. HTML ve CSS kullanarak bu uyumlulu\u011fu kolayca sa\u011flayabiliriz. Makalemizin ba\u015f\u0131nda yer alan <code><\/p>\n<style><\/code> blo\u011funda, mobil uyumluluk i\u00e7in baz\u0131 temel medya sorgular\u0131 (media queries) eklenmi\u015ftir. Bu sorgular, ekran geni\u015fli\u011fine g\u00f6re belirli CSS kurallar\u0131n\u0131 uygulayarak i\u00e7eri\u011fin d\u00fczenini ve boyutunu ayarlar.<\/p>\n<p>\u00d6rne\u011fin, <code>@media (max-width: 768px)<\/code> sorgusu, ekran geni\u015fli\u011fi 768 pikselden az oldu\u011funda devreye girer. Bu durumda, ba\u015fl\u0131klar\u0131n (<code>h2<\/code>, <code>h3<\/code>) yaz\u0131 tipleri k\u00fc\u00e7\u00fclt\u00fcl\u00fcr, sayfa kenar bo\u015fluklar\u0131 azalt\u0131l\u0131r ve genel olarak mobil cihazlarda daha rahat okunabilecek bir g\u00f6r\u00fcn\u00fcm sa\u011flan\u0131r. \u00d6zellikle kod bloklar\u0131 i\u00e7in <code>pre<\/code> etiketi i\u00e7inde yer alan <code>code<\/code> etiketlerine <code>white-space: pre-wrap;<\/code> ve <code>word-wrap: break-word;<\/code> \u00f6zellikleri eklenerek, uzun kod sat\u0131rlar\u0131n\u0131n otomatik olarak bir alt sat\u0131ra ge\u00e7mesi ve ekran d\u0131\u015f\u0131na ta\u015fmamas\u0131 sa\u011flan\u0131r. Bu, kullan\u0131c\u0131n\u0131n yatay kayd\u0131rma yapmak zorunda kalmadan kodu ba\u015ftan sona okuyabilmesi anlam\u0131na gelir.<\/p>\n<p>Bu t\u00fcr responsive tasar\u0131m teknikleri, teknik makalelerin eri\u015filebilirli\u011fini art\u0131r\u0131r. Okuyucular\u0131n\u0131z\u0131n i\u00e7eri\u011finize masa\u00fcst\u00fc bilgisayarlardan, tabletlerden veya ak\u0131ll\u0131 telefonlardan eri\u015febilece\u011fini d\u00fc\u015f\u00fcnerek tasar\u0131m yapmak, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir ve makalenizin daha geni\u015f bir kitleye ula\u015fmas\u0131n\u0131 sa\u011flar. Sadece kod bloklar\u0131 de\u011fil, genel metin paragraflar\u0131, listeler ve tablolar gibi di\u011fer HTML \u00f6\u011feleri de benzer \u015fekilde mobil cihazlara uyumlu hale getirilmelidir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS) ve Kapan\u0131\u015f<\/h2>\n<p>LeetCode #2 \"Add Two Numbers\" problemi, ba\u011fl\u0131 listeler ve temel aritmetik i\u015flemleri birle\u015ftirerek algoritmik d\u00fc\u015f\u00fcnme becerilerinizi geli\u015ftiren harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makalede, problemin ne oldu\u011funu, neden \u00f6nemli oldu\u011funu, ba\u011fl\u0131 listelerin temel kavramlar\u0131n\u0131 ve Python ile ad\u0131m ad\u0131m nas\u0131l \u00e7\u00f6z\u00fclece\u011fini detayl\u0131 bir \u015fekilde inceledik. Ayr\u0131ca, \u00e7\u00f6z\u00fcm\u00fcn performans analizini yaparak zaman ve uzay karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 de\u011ferlendirdik ve mobil uyumlu HTML sunumunun \u00f6nemine de\u011findik. Bu problem, bilgisayar bilimlerinin temel ta\u015flar\u0131ndan olan b\u00fcy\u00fck say\u0131 aritmeti\u011fi ve veri yap\u0131lar\u0131 konusundaki anlay\u0131\u015f\u0131n\u0131z\u0131 derinle\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<div class=\"faq-item\">\n<div class=\"faq-question\">Soru 1: Neden ba\u011fl\u0131 listelerle say\u0131lar\u0131 ters s\u0131rada sakl\u0131yoruz?<\/div>\n<div class=\"faq-answer\">Cevap: Say\u0131lar\u0131 ters s\u0131rada saklamak, toplama i\u015flemini geleneksel elden toplama y\u00f6ntemine benzer hale getirir. Birler basama\u011f\u0131ndan (listenin ba\u015f\u0131) ba\u015flayarak basamaklar\u0131 toplar ve eldeyi bir sonraki basama\u011fa aktar\u0131r\u0131z. Bu, listenin ba\u015f\u0131na s\u00fcrekli ekleme yapma zorunlulu\u011funu ortadan kald\u0131rarak kodu basitle\u015ftirir ve performans\u0131 art\u0131r\u0131r. Aksi takdirde, listeleri ters \u00e7evirmemiz veya \u00f6zyinelemeli bir yakla\u015f\u0131m kullanmam\u0131z gerekirdi.<\/div>\n<\/p><\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">Soru 2: <code>dummyHead<\/code> d\u00fc\u011f\u00fcm\u00fcn\u00fc kullanmak zorunlu mu?<\/div>\n<div class=\"faq-answer\">Cevap: Teknik olarak zorunlu de\u011fildir, ancak kullan\u0131m\u0131 kodu \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftirir. <code>dummyHead<\/code> olmadan, toplam listesinin ilk d\u00fc\u011f\u00fcm\u00fcn\u00fc \u00f6zel olarak ele alman\u0131z gerekir. Bu, genellikle bir <code>if-else<\/code> kontrol\u00fc veya ilk d\u00fc\u011f\u00fcm\u00fcn ayr\u0131 bir \u015fekilde olu\u015fturulup daha sonra d\u00f6ng\u00fcye ge\u00e7ilmesi anlam\u0131na gelir. <code>dummyHead<\/code> ile, her d\u00fc\u011f\u00fcm\u00fc ayn\u0131 mant\u0131kla ekleyebilir ve en sonunda <code>dummyHead.next<\/code>'i d\u00f6nd\u00fcrerek ger\u00e7ek listeyi elde edersiniz, bu da kodunuzu daha temiz ve daha az hataya a\u00e7\u0131k hale getirir.<\/div>\n<\/p><\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">Soru 3: Bu problemi b\u00fcy\u00fck tam say\u0131larla (\u00f6rne\u011fin Python'daki gibi) direkt toplayarak \u00e7\u00f6zebilir miyiz?<\/div>\n<div class=\"faq-answer\">Cevap: Python gibi baz\u0131 dillerde tamsay\u0131lar otomatik olarak keyfi hassasiyeti destekler, yani ne kadar b\u00fcy\u00fck olursa olsun say\u0131lar\u0131 do\u011frudan toplayabilirsiniz. Ancak LeetCode gibi platformlarda, problemin amac\u0131 genellikle belirli veri yap\u0131lar\u0131 ve algoritmalar \u00fczerinde bilgi birikiminizi test etmektir. Ba\u011fl\u0131 listeleri direkt say\u0131lara d\u00f6n\u00fc\u015ft\u00fcr\u00fcp toplamak ve sonra tekrar ba\u011fl\u0131 listeye \u00e7evirmek, e\u011fer say\u0131lar \u00e7ok b\u00fcy\u00fckse bellekte a\u015f\u0131r\u0131 yer kaplayabilir veya verilen k\u0131s\u0131tlamalar\u0131 (\u00f6rne\u011fin bellek s\u0131n\u0131r\u0131) a\u015fabilir. Bu nedenle, ba\u011fl\u0131 listelerle basamak basamak toplama yakla\u015f\u0131m\u0131, problemin ruhuna ve k\u0131s\u0131tlamalar\u0131na daha uygun bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/div>\n<\/p><\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">Soru 4: \u00c7\u00f6z\u00fcm\u00fcn zaman ve uzay karma\u015f\u0131kl\u0131\u011f\u0131 nedir?<\/div>\n<div class=\"faq-answer\">Cevap: Hem zaman karma\u015f\u0131kl\u0131\u011f\u0131 hem de uzay karma\u015f\u0131kl\u0131\u011f\u0131 <code>O(max(m, n))<\/code>'dir, burada <code>m<\/code> ve <code>n<\/code> s\u0131ras\u0131yla iki giri\u015f ba\u011fl\u0131 listesinin uzunluklar\u0131d\u0131r. Zaman karma\u015f\u0131kl\u0131\u011f\u0131, her iki listedeki t\u00fcm basamaklar\u0131 bir kez i\u015fledi\u011fimiz i\u00e7in do\u011frusald\u0131r. Uzay karma\u015f\u0131kl\u0131\u011f\u0131 da, toplam\u0131 temsil eden yeni bir ba\u011fl\u0131 liste olu\u015fturmam\u0131z gerekti\u011fi i\u00e7in do\u011frusald\u0131r. Bu de\u011ferler, bu problem i\u00e7in optimal olarak kabul edilir \u00e7\u00fcnk\u00fc t\u00fcm giri\u015fi okumak ve \u00e7\u0131kt\u0131y\u0131 depolamak zorunday\u0131z.<\/div>\n<\/p><\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"LeetCode&#8217;da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan &#8220;Add Two Numbers&#8221; (\u0130ki Say\u0131y\u0131 Topla)&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-33160","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi<\/title>\n<meta name=\"description\" content=\"LeetCode&#039;da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan &quot;Add Two Numbers&quot; (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi\" \/>\n<meta property=\"og:description\" content=\"LeetCode&#039;da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan &quot;Add Two Numbers&quot; (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-30T08:31:43+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi\",\"datePublished\":\"2025-10-30T08:31:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\"},\"wordCount\":3109,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\",\"name\":\"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-30T08:31:43+00:00\",\"description\":\"LeetCode'da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan \\\"Add Two Numbers\\\" (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi","description":"LeetCode'da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan \"Add Two Numbers\" (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi","og_description":"LeetCode'da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan \"Add Two Numbers\" (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.","og_url":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-30T08:31:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi","datePublished":"2025-10-30T08:31:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/"},"wordCount":3109,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/","name":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-30T08:31:43+00:00","description":"LeetCode'da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan ve algoritmik d\u00fc\u015f\u00fcnme becerilerini geli\u015ftiren klasik bir problem olan \"Add Two Numbers\" (\u0130ki Say\u0131y\u0131 Topla) konusunu ele al\u0131yoruz. Bu makale, ba\u011fl\u0131 listelerle b\u00fcy\u00fck say\u0131lar\u0131 toplama y\u00f6ntemini s\u0131f\u0131rdan ad\u0131m ad\u0131m a\u00e7\u0131klayacak ve ger\u00e7ek d\u00fcnya uygulamalar\u0131na de\u011finecek.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/leetcode-2-iki-sayiyi-bagli-listelerle-toplama-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"LeetCode #2: \u0130ki Say\u0131y\u0131 Ba\u011fl\u0131 Listelerle Toplama Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33160"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33160\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}