{"id":35878,"date":"2025-12-05T02:01:06","date_gmt":"2025-12-04T23:01:06","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/"},"modified":"2025-12-05T02:01:06","modified_gmt":"2025-12-04T23:01:06","slug":"kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/","title":{"rendered":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#8217;e Kapsaml\u0131 Bir Yakla\u015f\u0131m"},"content":{"rendered":"<p><body><\/p>\n<p>Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, &#8220;Coding Challenge Practice &#8211; Question 71&#8221; ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m end\u00fcstrisinde, sadece kod yazabilmek yeterli de\u011fildir; ayn\u0131 zamanda kar\u015f\u0131la\u015f\u0131lan problemleri analiz edebilme, farkl\u0131 \u00e7\u00f6z\u00fcm yakla\u015f\u0131mlar\u0131 geli\u015ftirebilme ve bu \u00e7\u00f6z\u00fcmlerin verimlili\u011fini de\u011ferlendirebilme yetkinlikleri hayati \u00f6nem ta\u015f\u0131r. Kodlama sorular\u0131, tam da bu yetkinlikleri \u00f6l\u00e7mek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu sorular sayesinde, adaylar\u0131n algoritma bilgisi, veri yap\u0131lar\u0131na hakimiyeti, hata ay\u0131klama becerileri ve en \u00f6nemlisi, bask\u0131 alt\u0131nda problem \u00e7\u00f6zme yetene\u011fi ortaya \u00e7\u0131kar. Dolay\u0131s\u0131yla, bir yaz\u0131l\u0131m geli\u015ftiricisi olarak kendinizi s\u00fcrekli geli\u015ftirmek ve kariyerinizde ilerlemek istiyorsan\u0131z, kodlama prati\u011fi vazge\u00e7ilmez bir unsurdur. \u00d6zellikle m\u00fclakatlarda kar\u015f\u0131la\u015f\u0131lan soyut algoritmik problemler, genellikle ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131n basitle\u015ftirilmi\u015f birer yans\u0131mas\u0131d\u0131r. \u00d6rne\u011fin, b\u00fcy\u00fck veri k\u00fcmelerinde belirli desenleri aramak, finansal modellerde trendleri tespit etmek veya kaynak tahsisini optimize etmek gibi g\u00f6revler, temelinde benzer algoritmik d\u00fc\u015f\u00fcnce yap\u0131lar\u0131 bar\u0131nd\u0131r\u0131r. Bu nedenle, &#8220;Soru 71&#8221; gibi bir problem \u00fczerinde \u00e7al\u0131\u015fmak, sadece bu soruyu \u00e7\u00f6zmeyi de\u011fil, ayn\u0131 zamanda benzer d\u00fc\u015f\u00fcnce kal\u0131plar\u0131n\u0131 farkl\u0131 ba\u011flamlarda uygulamay\u0131 da \u00f6\u011fretir. Bu pratikler, bizi daha esnek, yarat\u0131c\u0131 ve etkili problem \u00e7\u00f6z\u00fcc\u00fcler haline getirir. Ayr\u0131ca, farkl\u0131 \u00e7\u00f6z\u00fcm yakla\u015f\u0131mlar\u0131n\u0131 denemek ve bunlar\u0131n zaman ile uzay karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rmak, performans optimizasyonunun neden bu kadar kritik oldu\u011funu anlamam\u0131z\u0131 sa\u011flar. Unutmay\u0131n, iyi yaz\u0131lm\u0131\u015f bir kod sadece i\u015flevsel olmakla kalmaz, ayn\u0131 zamanda kaynaklar\u0131 verimli kullan\u0131r ve geni\u015f \u00f6l\u00e7ekte s\u00fcrd\u00fcr\u00fclebilir olur. Bu kapsaml\u0131 anlay\u0131\u015f, ba\u015far\u0131l\u0131 bir yaz\u0131l\u0131m kariyerinin temelini olu\u015fturur. Bir problemin \u00e7e\u015fitli seviyelerde nas\u0131l \u00e7\u00f6z\u00fclebilece\u011fini g\u00f6rmek, bize hem teorik bilgiyi hem de pratik uygulama becerisini kazand\u0131r\u0131r. Bu s\u00fcre\u00e7te, kodlama becerilerimiz peki\u015firken, ayn\u0131 zamanda daha sa\u011flam ve mant\u0131kl\u0131 bir d\u00fc\u015f\u00fcnce yap\u0131s\u0131 geli\u015ftiririz. \u0130\u015fte bu y\u00fczden, her bir kodlama sorusu, ki\u015fisel ve profesyonel geli\u015fimimiz i\u00e7in bir f\u0131rsat olarak g\u00f6r\u00fclmelidir.<\/p>\n<h2>&#8220;Soru 71&#8221; Nedir ve Hangi Temelleri Bilmeliyiz?<\/h2>\n<p>&#8220;Soru 71&#8221; olarak ele alaca\u011f\u0131m\u0131z problem, \u015fu \u015fekildedir: &#8220;Verilen bir tamsay\u0131 dizisinde (array), toplam\u0131 belirli bir S hedefine (target sum) ula\u015fan ard\u0131\u015f\u0131k alt dizilerin (contiguous subarrays) say\u0131s\u0131n\u0131 bulun.&#8221; Bu problem, ilk bak\u0131\u015fta basit gibi g\u00f6r\u00fcnse de, farkl\u0131 \u00e7\u00f6z\u00fcm yakla\u015f\u0131mlar\u0131 ve performans optimizasyonlar\u0131 sunan klasik bir algoritmik sorundur. Bu soruyu \u00e7\u00f6zmeden \u00f6nce, baz\u0131 temel kavramlar\u0131 anlamak \u00f6nemlidir:<\/p>\n<ol>\n<li><strong>Diziler (Arrays):<\/strong> Veri depolaman\u0131n en temel yollar\u0131ndan biridir. Belirli bir s\u0131raya g\u00f6re d\u00fczenlenmi\u015f, genellikle ayn\u0131 t\u00fcrden verilerin bir koleksiyonudur.<\/li>\n<li><strong>Alt Diziler (Subarrays):<\/strong> Bir dizinin ard\u0131\u015f\u0131k elemanlar\u0131ndan olu\u015fan herhangi bir par\u00e7as\u0131d\u0131r. \u00d6rne\u011fin, <code>[1, 2, 3, 4]<\/code> dizisinde <code>[2, 3]<\/code> bir alt dizidir, ancak <code>[1, 3]<\/code> ard\u0131\u015f\u0131k olmad\u0131\u011f\u0131 i\u00e7in alt dizi de\u011fildir.<\/li>\n<li><strong>Hedef Toplam (Target Sum &#8211; S):<\/strong> Soruda bize verilen ve alt dizilerin toplam\u0131n\u0131n bu de\u011fere e\u015fit olmas\u0131n\u0131 bekledi\u011fimiz say\u0131d\u0131r.<\/li>\n<li><strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131 (Time Complexity):<\/strong> Bir algoritman\u0131n \u00e7al\u0131\u015fma s\u00fcresinin giri\u015f boyutuna (genellikle &#8216;n&#8217; ile g\u00f6sterilir) ba\u011fl\u0131 olarak nas\u0131l de\u011fi\u015fti\u011fini ifade eder. Genellikle Big O notasyonu (\u00d6rn: O(n), O(n^2), O(log n)) ile g\u00f6sterilir. Daha k\u00fc\u00e7\u00fck karma\u015f\u0131kl\u0131k, daha h\u0131zl\u0131 algoritma anlam\u0131na gelir.<\/li>\n<li><strong>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131 (Space Complexity):<\/strong> Bir algoritman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in ihtiya\u00e7 duydu\u011fu haf\u0131za miktar\u0131n\u0131n giri\u015f boyutuna ba\u011fl\u0131 olarak nas\u0131l de\u011fi\u015fti\u011fini ifade eder. Bu da Big O notasyonu ile g\u00f6sterilir.<\/li>\n<\/ol>\n<p>Bu temel kavramlar, bir algoritman\u0131n verimlili\u011fini anlamak ve farkl\u0131 \u00e7\u00f6z\u00fcmleri kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in kritik \u00f6neme sahiptir. \u00d6zellikle zaman ve uzay karma\u015f\u0131kl\u0131\u011f\u0131, bir algoritman\u0131n b\u00fcy\u00fck veri setleri \u00fczerinde ne kadar iyi performans g\u00f6sterece\u011fini belirler. \u00d6rne\u011fin, O(n^2) bir \u00e7\u00f6z\u00fcm, n=1000 i\u00e7in 1.000.000 i\u015flem yapabilirken, O(n) bir \u00e7\u00f6z\u00fcm sadece 1.000 i\u015flem yapar. Bu fark, b\u00fcy\u00fck \u00f6l\u00e7ekli sistemlerde inan\u0131lmaz derecede \u00f6nemlidir. Soru 71, bize bu farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerini deneyimleme ve en optimal \u00e7\u00f6z\u00fcm\u00fc bulma f\u0131rsat\u0131 sunar. Problemi anlamak, \u00e7\u00f6z\u00fcm\u00fcn yar\u0131s\u0131d\u0131r. Dolay\u0131s\u0131yla, sorunun ne istedi\u011fini, hangi k\u0131s\u0131tlamalar\u0131n oldu\u011funu ve hangi veri yap\u0131lar\u0131n\u0131 kullanabilece\u011fimizi net bir \u015fekilde belirlemekle i\u015fe ba\u015flamal\u0131y\u0131z. \u00c7\u00f6z\u00fcm geli\u015ftirme s\u00fcrecinde, her ad\u0131m\u0131 dikkatlice d\u00fc\u015f\u00fcnmek, potansiyel hatalar\u0131 \u00f6ng\u00f6rmek ve kenar durumlar\u0131 (edge cases) hesaba katmak, ba\u015far\u0131l\u0131 bir sonuca ula\u015fman\u0131n anahtar\u0131d\u0131r. Bu sayede, hem kodumuzun do\u011frulu\u011funu hem de sa\u011flaml\u0131\u011f\u0131n\u0131 art\u0131r\u0131r\u0131z. Problem \u00e7\u00f6zme yetene\u011finizi geli\u015ftirmek i\u00e7in, bu temel bilgilere hakim olmak ve bunlar\u0131 pratik uygulamalara d\u00f6n\u00fc\u015ft\u00fcrmek son derece \u00f6nemlidir. Her yeni problem, bu temel bilgileri farkl\u0131 \u015fekillerde uygulaman\u0131za olanak tan\u0131r ve zamanla daha karma\u015f\u0131k sorunlar\u0131 \u00e7\u00f6zme konusunda size g\u00fcven kazand\u0131r\u0131r.<\/p>\n<h3>\u0130lk Ad\u0131m: Kaba Kuvvet Yakla\u015f\u0131m\u0131 ile \u00c7\u00f6z\u00fcme Nas\u0131l Ba\u015flan\u0131r?<\/h3>\n<p>Herhangi bir algoritmik problemi \u00e7\u00f6zerken, genellikle ilk akla gelen ve en basit yol, &#8220;kaba kuvvet&#8221; (brute-force) yakla\u015f\u0131m\u0131d\u0131r. Bu y\u00f6ntem, t\u00fcm olas\u0131 kombinasyonlar\u0131 deneyerek do\u011fru \u00e7\u00f6z\u00fcm\u00fc bulmaya \u00e7al\u0131\u015f\u0131r. &#8220;Soru 71&#8221; i\u00e7in kaba kuvvet yakla\u015f\u0131m\u0131, her olas\u0131 ard\u0131\u015f\u0131k alt diziyi olu\u015fturmak ve bunlar\u0131n toplam\u0131n\u0131 hesaplayarak hedef toplam (S) ile kar\u015f\u0131la\u015ft\u0131rmak anlam\u0131na gelir. Bu yakla\u015f\u0131m, genellikle en az optimize edilmi\u015f olsa da, bir probleme nas\u0131l ba\u015flanaca\u011f\u0131n\u0131 ve temel mant\u0131\u011f\u0131n\u0131 anlamak i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u00dc\u00e7 i\u00e7 i\u00e7e d\u00f6ng\u00fc kullanarak bu \u00e7\u00f6z\u00fcm\u00fc uygulayabiliriz:\n<\/p>\n<ol>\n<li><strong>D\u0131\u015f D\u00f6ng\u00fc (i):<\/strong> Alt dizinin ba\u015flang\u0131\u00e7 noktas\u0131n\u0131 belirler.<\/li>\n<li><strong>Orta D\u00f6ng\u00fc (j):<\/strong> Alt dizinin biti\u015f noktas\u0131n\u0131 belirler (i&#8217;den b\u00fcy\u00fck veya e\u015fit olmal\u0131).<\/li>\n<li><strong>\u0130\u00e7 D\u00f6ng\u00fc (k):<\/strong> Ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131 aras\u0131ndaki elemanlar\u0131n toplam\u0131n\u0131 hesaplar.<\/li>\n<\/ol>\n<p>\u015eimdi bu mant\u0131\u011f\u0131 bir kod blo\u011fu ile g\u00f6relim:<\/p>\n<pre><code>\nfunction findSubarraySumBruteForce(arr, targetSum) {\n    let count = 0;\n    const n = arr.length;\n\n    for (let i = 0; i < n; i++) { \/\/ Ba\u015flang\u0131\u00e7 indeksi\n        for (let j = i; j < n; j++) { \/\/ Biti\u015f indeksi\n            let currentSum = 0;\n            for (let k = i; k <= j; k++) { \/\/ Alt dizinin toplam\u0131n\u0131 hesapla\n                currentSum += arr[k];\n            }\n            if (currentSum === targetSum) {\n                count++;\n            }\n        }\n    }\n    return count;\n}\n\n\/\/ \u00d6rnek kullan\u0131m:\nconst numbers1 = [1, 1, 1];\nconst target1 = 2;\nconsole.log(<code>Dizi: [${numbers1}], Hedef Toplam: ${target1}, Sonu\u00e7: ${findSubarraySumBruteForce(numbers1, target1)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers2 = [1, 2, 3, 4, 5];\nconst target2 = 9;\nconsole.log(<code>Dizi: [${numbers2}], Hedef Toplam: ${target2}, Sonu\u00e7: ${findSubarraySumBruteForce(numbers2, target2)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2 ([4,5], [2,3,4])\n\nconst numbers3 = [2, -2, 5, -2, 2];\nconst target3 = 0;\nconsole.log(<code>Dizi: [${numbers3}], Hedef Toplam: ${target3}, Sonu\u00e7: ${findSubarraySumBruteForce(numbers3, target3)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2 ([2,-2], [-2,2])\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Karma\u015f\u0131kl\u0131k Analizi:<\/strong>\n<\/p>\n<ul>\n<li><strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> \u00dc\u00e7 i\u00e7 i\u00e7e d\u00f6ng\u00fc kulland\u0131\u011f\u0131m\u0131z i\u00e7in, bu \u00e7\u00f6z\u00fcm\u00fcn zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(n^3)&#8217;t\u00fcr. N, dizideki eleman say\u0131s\u0131d\u0131r. B\u00fcy\u00fck diziler i\u00e7in bu yakla\u015f\u0131m olduk\u00e7a yava\u015f olacakt\u0131r.<\/li>\n<li><strong>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> Ekstra bir veri yap\u0131s\u0131 kullanmad\u0131\u011f\u0131m\u0131z i\u00e7in, uzay karma\u015f\u0131kl\u0131\u011f\u0131 O(1)&#8217;dir (sabit uzay).<\/li>\n<\/ul>\n<p>Bu kaba kuvvet \u00e7\u00f6z\u00fcm\u00fc, k\u00fc\u00e7\u00fck dizilerde kabul edilebilir bir performans sergilese de, daha b\u00fcy\u00fck veri setleriyle kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda h\u0131zla yetersiz kalacakt\u0131r. Ancak, bu temel \u00fczerinde daha verimli \u00e7\u00f6z\u00fcmler in\u015fa edebiliriz. Bir sonraki ad\u0131mda, toplam hesaplama i\u015flemini optimize ederek zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 nas\u0131l d\u00fc\u015f\u00fcrebilece\u011fimizi g\u00f6rece\u011fiz. Unutmayal\u0131m ki, her zaman bir problemi \u00e7\u00f6zmenin birden fazla yolu vard\u0131r ve en basit olan\u0131 genellikle ilk ad\u0131md\u0131r. Bu ba\u015flang\u0131\u00e7, bizi daha sofistike ve performansl\u0131 \u00e7\u00f6z\u00fcmlere g\u00f6t\u00fcren bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr. Hata ay\u0131klama ve test s\u00fcre\u00e7leri de bu ilk ad\u0131m\u0131 atarken olduk\u00e7a basittir, bu da \u00e7\u00f6z\u00fcm\u00fcn do\u011frulu\u011funu teyit etmek i\u00e7in iyi bir ba\u015flang\u0131\u00e7 sa\u011flar.<\/p>\n<h3>Verimlili\u011fi Art\u0131rmak: \u00d6n Ek Toplamlar\u0131 (Prefix Sums) ile Daha \u0130yi Bir Y\u00f6ntem M\u00fcmk\u00fcn m\u00fc?<\/h3>\n<p>Kaba kuvvet yakla\u015f\u0131m\u0131nda, her alt dizi i\u00e7in toplam\u0131 yeniden hesaplamak zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131yordu. Bu tekrarl\u0131 hesaplamalar\u0131 ortadan kald\u0131rmak i\u00e7in &#8220;\u00f6n ek toplamlar\u0131&#8221; (prefix sums) ad\u0131 verilen bir teknik kullanabiliriz. \u00d6n ek toplamlar\u0131, bir dizinin ba\u015f\u0131ndan belirli bir indekse kadar olan elemanlar\u0131n toplam\u0131n\u0131 \u00f6nceden hesaplay\u0131p depolayarak, herhangi bir alt dizinin toplam\u0131n\u0131 O(1) sabit zamanda bulmam\u0131z\u0131 sa\u011flar.\n<\/p>\n<p><strong>\u00d6n Ek Toplamlar\u0131 Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/strong>\n<\/p>\n<ol>\n<li>Bir <code>prefixSum<\/code> dizisi olu\u015fturulur. <code>prefixSum[i]<\/code>, orijinal dizinin ilk <code>i<\/code> eleman\u0131n\u0131n toplam\u0131n\u0131 tutar.<\/li>\n<li><code>prefixSum[0]<\/code> genellikle 0 olarak ayarlan\u0131r veya ilk elemanla ba\u015flat\u0131l\u0131r.<\/li>\n<li><code>prefixSum[i] = prefixSum[i-1] + arr[i-1]<\/code> form\u00fcl\u00fc kullan\u0131larak dizi doldurulur.<\/li>\n<\/ol>\n<p>Bir alt dizinin (<code>arr[i...j]<\/code>) toplam\u0131n\u0131 bulmak i\u00e7in basit\u00e7e <code>prefixSum[j+1] - prefixSum[i]<\/code> i\u015flemini yapar\u0131z. Bu sayede, i\u00e7 d\u00f6ng\u00fcden kurtulur ve zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 O(N^2)&#8217;ye d\u00fc\u015f\u00fcr\u00fcr\u00fcz.<\/p>\n<pre><code>\nfunction findSubarraySumWithPrefixSums(arr, targetSum) {\n    let count = 0;\n    const n = arr.length;\n    const prefixSums = new Array(n + 1).fill(0); \/\/ prefixSums[0] = 0\n\n    \/\/ \u00d6n ek toplamlar\u0131n\u0131 hesapla\n    for (let i = 0; i < n; i++) {\n        prefixSums[i + 1] = prefixSums[i] + arr[i];\n    }\n\n    \/\/ Her olas\u0131 alt dizinin toplam\u0131n\u0131 kontrol et\n    for (let i = 0; i < n; i++) { \/\/ Ba\u015flang\u0131\u00e7 indeksi\n        for (let j = i; j < n; j++) { \/\/ Biti\u015f indeksi\n            \/\/ arr[i...j] alt dizisinin toplam\u0131: prefixSums[j+1] - prefixSums[i]\n            const currentSum = prefixSums[j + 1] - prefixSums[i];\n            if (currentSum === targetSum) {\n                count++;\n            }\n        }\n    }\n    return count;\n}\n\n\/\/ \u00d6rnek kullan\u0131m:\nconst numbers4 = [1, 1, 1];\nconst target4 = 2;\nconsole.log(<code>Dizi: [${numbers4}], Hedef Toplam: ${target4}, Sonu\u00e7: ${findSubarraySumWithPrefixSums(numbers4, target4)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers5 = [1, 2, 3, 4, 5];\nconst target5 = 9;\nconsole.log(<code>Dizi: [${numbers5}], Hedef Toplam: ${target5}, Sonu\u00e7: ${findSubarraySumWithPrefixSums(numbers5, target5)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers6 = [2, -2, 5, -2, 2];\nconst target6 = 0;\nconsole.log(<code>Dizi: [${numbers6}], Hedef Toplam: ${target6}, Sonu\u00e7: ${findSubarraySumWithPrefixSums(numbers6, target6)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Karma\u015f\u0131kl\u0131k Analizi:<\/strong>\n<\/p>\n<ul>\n<li><strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> \u00d6n ek toplamlar\u0131n\u0131 hesaplamak O(n) zaman al\u0131r. Daha sonra, iki i\u00e7 i\u00e7e d\u00f6ng\u00fc ile alt dizileri kontrol etti\u011fimiz i\u00e7in, bu k\u0131s\u0131m O(n^2) zaman al\u0131r. Dolay\u0131s\u0131yla, toplam zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(n^2)&#8217;dir. Bu, O(n^3)&#8217;ten belirgin bir iyile\u015fmedir.<\/li>\n<li><strong>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> \u00d6n ek toplamlar\u0131n\u0131 depolamak i\u00e7in ek bir <code>prefixSums<\/code> dizisi kulland\u0131\u011f\u0131m\u0131z i\u00e7in, uzay karma\u015f\u0131kl\u0131\u011f\u0131 O(n)&#8217;dir.<\/li>\n<\/ul>\n<p>Bu iyile\u015ftirme, b\u00fcy\u00fck veri setlerinde kaba kuvvet \u00e7\u00f6z\u00fcm\u00fcne g\u00f6re \u00e7ok daha iyi performans g\u00f6sterir. Ancak, hala daha optimize bir \u00e7\u00f6z\u00fcm aray\u0131\u015f\u0131nda olmal\u0131y\u0131z. \u00d6zellikle N&#8217;nin on binlerce veya y\u00fcz binlerce olabilece\u011fi durumlarda O(N^2) bile kabul edilemez derecede yava\u015f olabilir. \u00d6n ek toplamlar\u0131 tekni\u011fi, bir\u00e7ok farkl\u0131 algoritmik problemde kullan\u0131lan temel bir ara\u00e7t\u0131r ve bu y\u00fczden iyi anla\u015f\u0131lmas\u0131 gerekmektedir. \u015eimdi, bu tekni\u011fi bir ad\u0131m daha ileri g\u00f6t\u00fcrerek, performans\u0131 O(N)&#8217;ye nas\u0131l d\u00fc\u015f\u00fcrebilece\u011fimizi inceleyece\u011fiz.<\/p>\n<h2>En Optimize \u00c7\u00f6z\u00fcm: Hash Map (Harita) ile \u00d6n Ek Toplamlar\u0131<\/h2>\n<p>O(N^2) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip \u00f6n ek toplamlar\u0131 \u00e7\u00f6z\u00fcm\u00fcn\u00fc daha da optimize etmek i\u00e7in, hash map (harita veya s\u00f6zl\u00fck) ad\u0131 verilen g\u00fc\u00e7l\u00fc bir veri yap\u0131s\u0131ndan faydalanabiliriz. Bu teknikle, zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 do\u011frusal O(N) seviyesine \u00e7ekebiliriz.\n<\/p>\n<p><strong>Mant\u0131k:<\/strong>\n<\/p>\n<p>Bir alt dizinin toplam\u0131 <code>currentSum<\/code> oldu\u011funda ve biz hedef toplam (<code>targetSum<\/code>) ar\u0131yorsak, ge\u00e7mi\u015fte kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z bir \u00f6n ek toplam\u0131n\u0131n <code>currentSum - targetSum<\/code> de\u011ferine e\u015fit olup olmad\u0131\u011f\u0131n\u0131 kontrol etmemiz gerekir. E\u011fer b\u00f6yle bir de\u011fer varsa, bu, mevcut noktadan o ge\u00e7mi\u015f noktaya kadar olan alt dizinin toplam\u0131n\u0131n tam olarak <code>targetSum<\/code> oldu\u011funu g\u00f6sterir. \u00d6rne\u011fin, <code>currentSum<\/code> 10 ve <code>targetSum<\/code> 7 ise, <code>currentSum - targetSum = 3<\/code> demektir. E\u011fer daha \u00f6nce bir noktada toplam 3 olmu\u015fsa, o noktadan mevcut noktaya kadar olan alt dizinin toplam\u0131 7 olacakt\u0131r.\n<\/p>\n<p>Hash map, bu &#8220;ge\u00e7mi\u015f toplamlar\u0131&#8221; ve bunlar\u0131n ka\u00e7 kez kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131n\u0131 depolamak i\u00e7in m\u00fckemmeldir. Haritada <code>{toplam: adet}<\/code> \u015feklinde anahtar-de\u011fer \u00e7iftleri tutar\u0131z.\n<\/p>\n<p><strong>Algoritma Ad\u0131mlar\u0131:<\/strong>\n<\/p>\n<ol>\n<li>Bir <code>HashMap<\/code> (veya JavaScript&#8217;te <code>Map<\/code>) olu\u015fturun ve ba\u015flang\u0131\u00e7 olarak <code>{0: 1}<\/code> \u00e7iftini ekleyin. Bu, bo\u015f bir alt dizinin toplam\u0131n\u0131n 0 oldu\u011funu ve bir kez g\u00f6r\u00fcld\u00fc\u011f\u00fcn\u00fc varsayar. Bu, \u00f6zellikle hedef toplam 0 oldu\u011funda veya negatif say\u0131larla \u00e7al\u0131\u015f\u0131rken do\u011fru sonu\u00e7lar elde etmek i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<li><code>currentSum<\/code> ad\u0131nda bir de\u011fi\u015fkeni 0 olarak ba\u015flat\u0131n.<\/li>\n<li><code>count<\/code> ad\u0131nda bir de\u011fi\u015fkeni 0 olarak ba\u015flat\u0131n.<\/li>\n<li>Dizi \u00fczerinde soldan sa\u011fa do\u011fru ilerleyin:\n<ol>\n<li>Mevcut eleman\u0131 <code>currentSum<\/code>&#8216;e ekleyin.<\/li>\n<li><code>neededSum = currentSum - targetSum<\/code> hesaplay\u0131n.<\/li>\n<li>E\u011fer <code>HashMap<\/code> i\u00e7inde <code>neededSum<\/code> anahtar\u0131 varsa, <code>count<\/code> de\u011ferine bu anahtar\u0131n de\u011ferini (ka\u00e7 kez g\u00f6r\u00fcld\u00fc\u011f\u00fcn\u00fc) ekleyin. \u00c7\u00fcnk\u00fc <code>neededSum<\/code> kadar olan bir alt dizi buldu\u011fumuz her seferde, o noktadan mevcut noktaya kadar olan yeni bir alt dizi hedef toplama e\u015fit demektir.<\/li>\n<li>Mevcut <code>currentSum<\/code> de\u011ferini <code>HashMap<\/code>&#8216;e ekleyin veya e\u011fer zaten varsa de\u011ferini bir art\u0131r\u0131n.<\/li>\n<\/ol>\n<\/li>\n<li>D\u00f6ng\u00fc bitti\u011finde <code>count<\/code> de\u011ferini d\u00f6nd\u00fcr\u00fcn.<\/li>\n<\/ol>\n<p>Bu yakla\u015f\u0131m, her bir eleman\u0131 yaln\u0131zca bir kez ziyaret etti\u011fimiz i\u00e7in zaman karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde d\u00fc\u015f\u00fcr\u00fcr. Hash map&#8217;e ekleme ve eri\u015fim i\u015flemleri ortalama O(1) zaman ald\u0131\u011f\u0131ndan, toplam zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(N) olur.<\/p>\n<pre><code>\nfunction findSubarraySumWithHashMap(arr, targetSum) {\n    let count = 0;\n    let currentSum = 0;\n    const sumCountMap = new Map(); \/\/ { sum: count of occurrences }\n\n    \/\/ Bo\u015f alt dizinin toplam\u0131 0'd\u0131r ve bir kez g\u00f6r\u00fclm\u00fc\u015ft\u00fcr.\n    \/\/ Bu, \u00f6zellikle hedef toplam 0 oldu\u011funda veya negatif say\u0131larla ba\u015fa \u00e7\u0131kmak i\u00e7in \u00f6nemlidir.\n    sumCountMap.set(0, 1); \n\n    for (let i = 0; i < arr.length; i++) {\n        currentSum += arr[i]; \/\/ Mevcut eleman\u0131 toplama ekle\n\n        \/\/ currentSum - targetSum de\u011ferinin daha \u00f6nce g\u00f6r\u00fcl\u00fcp g\u00f6r\u00fclmedi\u011fini kontrol et\n        \/\/ E\u011fer g\u00f6r\u00fcld\u00fcyse, bu, aradaki alt dizinin targetSum'e e\u015fit oldu\u011fu anlam\u0131na gelir.\n        const neededSum = currentSum - targetSum;\n        if (sumCountMap.has(neededSum)) {\n            count += sumCountMap.get(neededSum);\n        }\n\n        \/\/ Mevcut toplam\u0131 haritaya ekle veya say\u0131s\u0131n\u0131 art\u0131r\n        sumCountMap.set(currentSum, (sumCountMap.get(currentSum) || 0) + 1);\n    }\n\n    return count;\n}\n\n\/\/ \u00d6rnek kullan\u0131m:\nconst numbers7 = [1, 1, 1];\nconst target7 = 2;\nconsole.log(<code>Dizi: [${numbers7}], Hedef Toplam: ${target7}, Sonu\u00e7: ${findSubarraySumWithHashMap(numbers7, target7)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers8 = [1, 2, 3, 4, 5];\nconst target8 = 9;\nconsole.log(<code>Dizi: [${numbers8}], Hedef Toplam: ${target8}, Sonu\u00e7: ${findSubarraySumWithHashMap(numbers8, target8)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers9 = [2, -2, 5, -2, 2];\nconst target9 = 0;\nconsole.log(<code>Dizi: [${numbers9}], Hedef Toplam: ${target9}, Sonu\u00e7: ${findSubarraySumWithHashMap(numbers9, target9)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 2\n\nconst numbers10 = [-1, -1, 1];\nconst target10 = 0;\nconsole.log(<code>Dizi: [${numbers10}], Hedef Toplam: ${target10}, Sonu\u00e7: ${findSubarraySumWithHashMap(numbers10, target10)}<\/code>); \/\/ \u00c7\u0131kt\u0131: 1 ([-1, 1])\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Karma\u015f\u0131kl\u0131k Analizi:<\/strong>\n<\/p>\n<ul>\n<li><strong>Zaman Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> Diziyi sadece tek bir d\u00f6ng\u00fcde bir kez geziniyoruz. <code>Map<\/code> (hash map) i\u015flemleri (<code>set<\/code>, <code>get<\/code>, <code>has<\/code>) ortalama O(1) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahiptir. Bu nedenle, genel zaman karma\u015f\u0131kl\u0131\u011f\u0131 O(N)&#8217;dir.<\/li>\n<li><strong>Uzay Karma\u015f\u0131kl\u0131\u011f\u0131:<\/strong> <code>sumCountMap<\/code> adl\u0131 bir <code>Map<\/code> kulland\u0131\u011f\u0131m\u0131z i\u00e7in, en k\u00f6t\u00fc durumda bu harita N kadar farkl\u0131 toplam de\u011feri i\u00e7erebilir. Dolay\u0131s\u0131yla, uzay karma\u015f\u0131kl\u0131\u011f\u0131 O(N)&#8217;dir.<\/li>\n<\/ul>\n<p>Bu \u00e7\u00f6z\u00fcm, \u00f6nceki yakla\u015f\u0131mlara g\u00f6re \u00e7ok daha verimlidir ve b\u00fcy\u00fck veri setleri i\u00e7in idealdir. Algoritman\u0131n bu versiyonu, &#8220;Soru 71&#8221; gibi problemlerde genellikle beklenen optimal \u00e7\u00f6z\u00fcmd\u00fcr ve m\u00fclakatlarda bu seviyede bir performans g\u00f6stermek, problem \u00e7\u00f6zme yetene\u011finizin \u00fcst d\u00fczeyde oldu\u011funu kan\u0131tlar. Bu y\u00f6ntem, \u00f6n ek toplamlar\u0131 kavram\u0131n\u0131 ak\u0131ll\u0131ca kullanarak ve hash map&#8217;in h\u0131zl\u0131 arama yetene\u011finden faydalanarak karma\u015f\u0131kl\u0131\u011f\u0131 radikal bir \u015fekilde azalt\u0131r. Bu durum, veri yap\u0131lar\u0131n\u0131n ve algoritmik prensiplerin birle\u015fti\u011finde ne kadar g\u00fc\u00e7l\u00fc olabilece\u011fini g\u00f6steren g\u00fczel bir \u00f6rnektir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka Analizi: Bu Algoritma Nerede Kullan\u0131l\u0131r?<\/h2>\n<p>Bir algoritmik problemi \u00e7\u00f6zmenin \u00f6tesinde, bu \u00e7\u00f6z\u00fcm\u00fcn ger\u00e7ek d\u00fcnyada nerede kullan\u0131labilece\u011fini anlamak, \u00f6\u011frenme s\u00fcrecini \u00e7ok daha anlaml\u0131 k\u0131lar. &#8220;Soru 71&#8243;de ele ald\u0131\u011f\u0131m\u0131z belirli bir hedef toplama ula\u015fan alt dizileri bulma algoritmas\u0131, \u015fa\u015f\u0131rt\u0131c\u0131 derecede geni\u015f bir uygulama yelpazesine sahiptir. \u0130\u015fte baz\u0131 \u00f6rnekler ve vaka analizleri:\n<\/p>\n<ul>\n<li>\n        <strong>Finansal Veri Analizi:<\/strong><\/p>\n<p>Borsa verilerinde, belirli bir kar veya zarar hedefine ula\u015fan ard\u0131\u015f\u0131k i\u015flem d\u00f6nemlerini (g\u00fcnler, haftalar) bulmak isteyebilirsiniz. \u00d6rne\u011fin, bir hisse senedinin g\u00fcnl\u00fck fiyat de\u011fi\u015fimlerini i\u00e7eren bir dizi oldu\u011funu d\u00fc\u015f\u00fcn\u00fcn. Yat\u0131r\u0131mc\u0131lar, belirli bir getiri (hedef toplam) sa\u011flayan en k\u0131sa veya en uzun s\u00fcreyi bulmak isteyebilir. Algoritmam\u0131z, bu t\u00fcr trendleri h\u0131zl\u0131ca tespit etmeye yard\u0131mc\u0131 olabilir. \u00d6rne\u011fin, bir fon y\u00f6neticisi, belirli bir d\u00f6nemde %5&#8217;lik bir b\u00fcy\u00fcme (hedef toplam) sa\u011flayan ard\u0131\u015f\u0131k i\u015flem g\u00fcnlerini bulmak i\u00e7in bu algoritmay\u0131 kullanabilir. Bu, ge\u00e7mi\u015f verilerdeki ba\u015far\u0131l\u0131 stratejileri belirlemek ve gelecekteki yat\u0131r\u0131mlar i\u00e7in \u00f6ng\u00f6r\u00fclerde bulunmak a\u00e7\u0131s\u0131ndan kritik olabilir. Negatif say\u0131larla \u00e7al\u0131\u015fma yetene\u011fi sayesinde, belirli bir kay\u0131p e\u015fi\u011fini a\u015fan d\u00f6nemleri de tespit edebilir, b\u00f6ylece risk y\u00f6netim stratejileri geli\u015ftirilebilir. Bu analizler, genellikle b\u00fcy\u00fck miktarda ge\u00e7mi\u015f veriyi kapsad\u0131\u011f\u0131ndan, O(N) gibi h\u0131zl\u0131 bir algoritma kullanmak \u00e7ok \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n        <strong>G\u00f6r\u00fcnt\u00fc \u0130\u015fleme:<\/strong><\/p>\n<p>G\u00f6r\u00fcnt\u00fcler de asl\u0131nda piksel de\u011ferlerinden olu\u015fan b\u00fcy\u00fck diziler (veya matrisler) olarak d\u00fc\u015f\u00fcn\u00fclebilir. Bir g\u00f6r\u00fcnt\u00fcde belirli bir parlakl\u0131k seviyesine veya renk yo\u011funlu\u011funa sahip bir b\u00f6lgeyi (alt dizi\/alt matris) aramak i\u00e7in bu mant\u0131k kullan\u0131labilir. \u00d6rne\u011fin, t\u0131bbi g\u00f6r\u00fcnt\u00fclerde anormallikleri (belirli bir piksel yo\u011funlu\u011fu toplam\u0131na sahip lezyonlar gibi) tespit etmek veya uydu g\u00f6r\u00fcnt\u00fclerinde belirli \u00f6zelliklere sahip alanlar\u0131 (\u00f6rne\u011fin, ormanl\u0131k alanlar\u0131 belirli bir ye\u015fil tonu toplam\u0131 ile) belirlemek i\u00e7in benzer algoritmalar temel al\u0131nabilir. Bu, otonom s\u00fcr\u00fc\u015f sistemlerinde yol i\u015faretlerini tan\u0131madan, g\u00fcvenlik sistemlerinde anormal desenleri tespit etmeye kadar geni\u015f bir alana yay\u0131l\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>B\u00fcy\u00fck Veri Analizi ve Veri Ak\u0131\u015flar\u0131:<\/strong><\/p>\n<p>Sens\u00f6rlerden gelen veri ak\u0131\u015flar\u0131nda, sunucu loglar\u0131nda veya a\u011f trafi\u011finde belirli bir e\u015fi\u011fe ula\u015fan olay dizilerini tespit etmek gerekebilir. \u00d6rne\u011fin, bir sunucunun CPU kullan\u0131m\u0131n\u0131n belirli bir s\u00fcre boyunca (ard\u0131\u015f\u0131k olaylar) kritik bir seviyenin \u00fczerinde kal\u0131p kalmad\u0131\u011f\u0131n\u0131 kontrol etmek. Bu t\u00fcr sistemlerde veri s\u00fcrekli akt\u0131\u011f\u0131 i\u00e7in, verimli ve tek ge\u00e7i\u015fli (O(N) zaman karma\u015f\u0131kl\u0131\u011f\u0131na sahip) algoritmalar kullanmak hayati \u00f6nem ta\u015f\u0131r. Harita tabanl\u0131 \u00f6n ek toplamlar\u0131 \u00e7\u00f6z\u00fcm\u00fc, veri ak\u0131\u015f\u0131n\u0131 ger\u00e7ek zamanl\u0131 olarak i\u015flemek ve anormallikleri veya ilgi \u00e7ekici olaylar\u0131 an\u0131nda tespit etmek i\u00e7in idealdir. Bu, sistem g\u00fcvenli\u011finden performansa kadar bir\u00e7ok alanda de\u011ferli bilgiler sa\u011flayabilir.<\/p>\n<\/li>\n<li>\n        <strong>Genom Bilimi (Biyoinformatik):<\/strong><\/p>\n<p>DNA dizilerinde belirli n\u00fckleotid kombinasyonlar\u0131n\u0131 veya genetik motifleri ararken benzer mant\u0131klar kullan\u0131labilir. \u00d6rne\u011fin, belirli bir &#8220;a\u011f\u0131rl\u0131\u011fa&#8221; sahip (her n\u00fckleotide atanan bir say\u0131sal de\u011ferle) ard\u0131\u015f\u0131k bir gen segmentini bulmak. Bu, genetik hastal\u0131klar\u0131n nedenlerini anlamak veya ila\u00e7 geli\u015ftirmek i\u00e7in kritik bilgiler sa\u011flayabilir.<\/p>\n<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Bu algoritma, sadece tam hedef toplamlara ula\u015fan alt dizileri bulmakla kalmaz, ayn\u0131 zamanda &#8220;belirli bir aral\u0131ktaki toplamlar\u0131&#8221; veya &#8220;hedef toplama en yak\u0131n&#8221; alt dizileri bulmak gibi varyasyonlara da uyarlanabilir. Bu esneklik, onu ger\u00e7ek d\u00fcnyadaki problem \u00e7\u00f6zme ara\u00e7 kutunuzda \u00e7ok de\u011ferli bir par\u00e7a haline getirir. Problem tan\u0131m\u0131n\u0131 biraz de\u011fi\u015ftirerek, bu g\u00fc\u00e7l\u00fc algoritmay\u0131 bir\u00e7ok farkl\u0131 senaryoya uyarlayabilirsiniz.\n<\/div>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, &#8220;Soru 71&#8221; gibi soyut g\u00f6r\u00fcnen bir algoritmik problem, asl\u0131nda bir\u00e7ok pratik ve \u00f6nemli ger\u00e7ek d\u00fcnya uygulamas\u0131n\u0131n temelini olu\u015fturur. Bu t\u00fcr algoritmalar\u0131 anlamak ve optimize etmek, bir yaz\u0131l\u0131m geli\u015ftiricisinin problem \u00e7\u00f6zme yetene\u011fini ve sekt\u00f6rdeki de\u011ferini art\u0131r\u0131r. Bu vaka analizleri, sadece teorik bilginin de\u011fil, ayn\u0131 zamanda pratik uygulaman\u0131n da ne kadar \u00f6nemli oldu\u011funu g\u00f6stermektedir.<\/p>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar: Kodlama Becerilerinizi Nas\u0131l Geli\u015ftirirsiniz?<\/h2>\n<p>Sadece bir problemi \u00e7\u00f6zmek de\u011fil, ayn\u0131 zamanda bunu en iyi, en okunabilir ve en s\u00fcrd\u00fcr\u00fclebilir \u015fekilde yapmak, ger\u00e7ek bir yaz\u0131l\u0131m geli\u015ftiricinin alametifarikas\u0131d\u0131r. &#8220;Soru 71&#8221; \u00f6rne\u011fi \u00fczerinden, kodlama becerilerinizi daha da ileri ta\u015f\u0131mak i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar\u0131 inceleyelim:\n<\/p>\n<ol>\n<li><strong>Kenar Durumlar\u0131 (Edge Cases) ve K\u0131s\u0131tlamalar:<\/strong>\n<p>Herhangi bir algoritma geli\u015ftirirken, &#8220;normal&#8221; senaryolar kadar kenar durumlar\u0131 da d\u00fc\u015f\u00fcnmek hayati \u00f6nem ta\u015f\u0131r.\n        <\/p>\n<ul>\n<li><strong>Bo\u015f Dizi:<\/strong> Giri\u015f dizisi bo\u015fsa ne olur? Kodunuzun hata vermeden uygun bir de\u011fer (genellikle 0) d\u00f6nd\u00fcrmesi gerekir.<\/li>\n<li><strong>Tek Elemanl\u0131 Dizi:<\/strong> Dizi sadece bir eleman i\u00e7eriyorsa do\u011fru \u00e7al\u0131\u015f\u0131yor mu?<\/li>\n<li><strong>Negatif Say\u0131lar:<\/strong> Dizide negatif say\u0131lar varsa algoritmam\u0131z hala do\u011fru sonu\u00e7 veriyor mu? (Bizim hash map \u00e7\u00f6z\u00fcm\u00fcm\u00fcz negatif say\u0131larla da ba\u015fa \u00e7\u0131kabilir.)<\/li>\n<li><strong>S\u0131f\u0131r Hedef Toplam\u0131:<\/strong> Hedef toplam s\u0131f\u0131r ise, bo\u015f alt diziler (ki toplamlar\u0131 s\u0131f\u0131rd\u0131r) veya <code>[2, -2]<\/code> gibi alt diziler do\u011fru say\u0131l\u0131yor mu? Hash map&#8217;e <code>{0: 1}<\/code> eklememiz bu durumlar i\u00e7in olduk\u00e7a \u00f6nemliydi.<\/li>\n<li><strong>B\u00fcy\u00fck Say\u0131lar\/Ta\u015fma:<\/strong> Toplamlar integer s\u0131n\u0131rlar\u0131n\u0131 a\u015fabilir mi? Baz\u0131 dillerde (C++, Java) bu bir sorun olabilir. JavaScript&#8217;te <code>Number<\/code> tipi genellikle yeterince b\u00fcy\u00fck say\u0131lar\u0131 destekler.<\/li>\n<\/ul>\n<p>Bu senaryolar\u0131 test etmek i\u00e7in mutlaka test vakalar\u0131 olu\u015fturun.<\/p>\n<\/li>\n<li><strong>Hata Ay\u0131klama (Debugging) Stratejileri:<\/strong>\n<p>Karma\u015f\u0131k algoritmalarda hatalar\u0131 bulmak zor olabilir. Etkili hata ay\u0131klama i\u00e7in:\n        <\/p>\n<ul>\n<li><strong><code>console.log()<\/code> Kullan\u0131m\u0131:<\/strong> Kritik noktalarda de\u011fi\u015fkenlerin de\u011ferlerini, d\u00f6ng\u00fc indekslerini veya hash map i\u00e7eri\u011fini yazd\u0131rarak algoritman\u0131n ak\u0131\u015f\u0131n\u0131 takip edin.\n<pre><code>\nconsole.log(<code>\u0130ndeks: ${i}, Mevcut Eleman: ${arr[i]}, CurrentSum: ${currentSum}, NeededSum: ${neededSum}, Map:<\/code>, sumCountMap);\n                <\/pre>\n<p><\/code>\n            <\/li>\n<li><strong>Ad\u0131m Ad\u0131m \u0130zleme (Debugger):<\/strong> Taray\u0131c\u0131lar\u0131n geli\u015ftirici ara\u00e7lar\u0131 veya IDE'lerdeki (VS Code gibi) hata ay\u0131klay\u0131c\u0131lar\u0131 kullanarak kodunuzu ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131r\u0131n. Breakpoint'ler (kesme noktalar\u0131) ayarlayarak belirli noktalarda y\u00fcr\u00fctmeyi durdurabilir ve t\u00fcm de\u011fi\u015fkenlerin durumunu inceleyebilirsiniz.<\/li>\n<li><strong>Problemi Basitle\u015ftirme:<\/strong> Karma\u015f\u0131k bir hata buldu\u011funuzda, orijinal diziyi daha k\u00fc\u00e7\u00fck ve y\u00f6netilebilir bir boyuta indirgeyerek hata ay\u0131klama s\u00fcrecini kolayla\u015ft\u0131r\u0131n.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Kod Okunabilirli\u011fi ve Temiz Kod:<\/strong>\n<p>Kodunuzun sadece \u00e7al\u0131\u015fmas\u0131 yeterli de\u011fildir; ba\u015fkalar\u0131 (veya gelecekteki siz) taraf\u0131ndan kolayca anla\u015f\u0131lmas\u0131 da \u00f6nemlidir.\n        <\/p>\n<ul>\n<li><strong>Anlaml\u0131 De\u011fi\u015fken Adlar\u0131:<\/strong> <code>i<\/code>, <code>j<\/code> gibi genel isimler yerine <code>startIndex<\/code>, <code>endIndex<\/code>, <code>currentSum<\/code> gibi a\u00e7\u0131klay\u0131c\u0131 adlar kullan\u0131n.<\/li>\n<li><strong>Yorumlar:<\/strong> Karma\u015f\u0131k mant\u0131k i\u00e7eren k\u0131s\u0131mlarda veya \u00f6zel durumlar\u0131 a\u00e7\u0131klarken yorumlar ekleyin. Ancak her sat\u0131r\u0131 yorumlamak yerine, \"neden\" sorusunu a\u00e7\u0131klayan yorumlar yaz\u0131n.<\/li>\n<li><strong>Fonksiyonlara B\u00f6lme:<\/strong> Daha b\u00fcy\u00fck ve karma\u015f\u0131k bir \u00e7\u00f6z\u00fcm\u00fc daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir fonksiyonlara ay\u0131r\u0131n. Her fonksiyonun belirli bir i\u015fi yapmas\u0131n\u0131 sa\u011flay\u0131n (Single Responsibility Principle).<\/li>\n<li><strong>Kod Bi\u00e7imlendirme:<\/strong> Tutarl\u0131 girintileme, bo\u015fluklar ve sat\u0131r sonlar\u0131 kullanarak kodunuzu g\u00f6rsel olarak d\u00fczenli hale getirin. Prettier gibi ara\u00e7lar bu konuda yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Optimizasyon D\u00fc\u015f\u00fcncesi:<\/strong>\n<p>Bir problemi \u00e7\u00f6zerken her zaman farkl\u0131 \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn ve bunlar\u0131n zaman\/uzay karma\u015f\u0131kl\u0131klar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131r\u0131n. Kaba kuvvetten ba\u015flay\u0131p a\u015famal\u0131 olarak optimize etmek, iyi bir stratejidir. Her zaman \"daha iyi bir yol var m\u0131?\" sorusunu sorun.<\/p>\n<\/li>\n<\/ol>\n<h3>Mobil Uyumlu Tasar\u0131m ve Kullan\u0131c\u0131 Deneyimi: \u00c7\u00f6z\u00fcm Sunumunda Estetik \u00d6nemli mi?<\/h3>\n<p>Algoritma \u00e7\u00f6z\u00fcmlerini sunarken estetik ve mobil uyumluluk do\u011frudan kodun \u00e7al\u0131\u015fmas\u0131n\u0131 etkilemese de, \u00f6zellikle bir dok\u00fcmantasyon, blog yaz\u0131s\u0131 veya interaktif \u00f6\u011frenme platformu ba\u011flam\u0131nda, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Kod bloklar\u0131, a\u00e7\u0131klamalar ve \u00f6rnekler mobil cihazlarda da rahat\u00e7a okunabilmelidir. Bu, i\u00e7eri\u011fin daha geni\u015f bir kitleye ula\u015fmas\u0131n\u0131 ve bilgilerin daha kolay t\u00fcketilmesini sa\u011flar. \u00d6rne\u011fin, kod bloklar\u0131m\u0131z\u0131n dar ekranlarda kayd\u0131rma \u00e7ubuklar\u0131yla d\u00fczg\u00fcn bir \u015fekilde g\u00f6r\u00fcnt\u00fclenmesi veya yaz\u0131 boyutlar\u0131n\u0131n otomatik olarak ayarlanmas\u0131, kullan\u0131c\u0131 dostu bir deneyim i\u00e7in kritiktir. \u0130\u015fte temel bir CSS media query \u00f6rne\u011fiyle bu konuya de\u011finebiliriz:<\/p>\n<pre><code>\n\/* Genel kod blo\u011fu stilleri *\/\npre {\n    background-color: #2d2d2d;\n    color: #f8f8f2;\n    padding: 15px;\n    border-radius: 5px;\n    overflow-x: auto; \/* Yatay kayd\u0131rma \u00e7ubu\u011fu sa\u011flar *\/\n    font-family: 'Fira Code', 'Cascadia Code', monospace;\n    font-size: 0.9em;\n    line-height: 1.4;\n    margin-bottom: 20px;\n}\n\n\/* Mobil cihazlar i\u00e7in stil uyarlamalar\u0131 *\/\n@media (max-width: 768px) {\n    pre {\n        padding: 10px;\n        font-size: 0.8em;\n    }\n    body {\n        padding: 10px;\n    }\n    h2, h3 {\n        font-size: 1.3em;\n        margin-top: 1.5em;\n    }\n}\n\n@media (max-width: 480px) {\n    pre {\n        font-size: 0.75em;\n    }\n    h2 {\n        font-size: 1.2em;\n    }\n    h3 {\n        font-size: 1.1em;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS, <code>pre<\/code> etiketleri i\u00e7erisindeki kod bloklar\u0131n\u0131n ve di\u011fer metinlerin farkl\u0131 ekran boyutlar\u0131na g\u00f6re nas\u0131l adapte oldu\u011funu g\u00f6stermektedir. Bu, \"Soru 71\" gibi teknik i\u00e7erikleri payla\u015f\u0131rken, okuyucunun platformdan ba\u011f\u0131ms\u0131z olarak en iyi deneyimi ya\u015famas\u0131n\u0131 sa\u011flar. Unutmay\u0131n, iyi bir \u00e7\u00f6z\u00fcm sadece kodda de\u011fil, ayn\u0131 zamanda sunumda da gizlidir.<\/p>\n<h2>Sonu\u00e7: \"Soru 71\"den Neler \u00d6\u011frendik?<\/h2>\n<p>\"Coding Challenge Practice - Question 71\" ba\u015fl\u0131\u011f\u0131 alt\u0131nda ele ald\u0131\u011f\u0131m\u0131z belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemi, bize algoritmik problem \u00e7\u00f6zmenin \u00e7ok katmanl\u0131 yap\u0131s\u0131n\u0131 g\u00f6stermi\u015ftir. Kaba kuvvet yakla\u015f\u0131m\u0131ndan ba\u015flayarak, \u00f6n ek toplamlar\u0131 ile bir ad\u0131m ileri gidip, son olarak hash map destekli \u00f6n ek toplamlar\u0131 ile O(N) gibi do\u011frusal bir zaman karma\u015f\u0131kl\u0131\u011f\u0131na ula\u015fmak, algoritmalar\u0131n nas\u0131l optimize edildi\u011fine dair m\u00fckemmel bir \u00f6rnek te\u015fkil etmi\u015ftir. Bu yolculukta, sadece bir problem \u00e7\u00f6zme tekni\u011fini \u00f6\u011frenmekle kalmad\u0131k, ayn\u0131 zamanda:\n<\/p>\n<ul>\n<li>Farkl\u0131 algoritmik yakla\u015f\u0131mlar\u0131n zaman ve uzay karma\u015f\u0131kl\u0131\u011f\u0131 \u00fczerindeki etkilerini g\u00f6rd\u00fck.<\/li>\n<li>\u00d6n ek toplamlar\u0131 ve hash map gibi temel veri yap\u0131lar\u0131n\u0131n ve algoritmik tekniklerin g\u00fcc\u00fcn\u00fc anlad\u0131k.<\/li>\n<li>Ger\u00e7ek d\u00fcnya senaryolar\u0131nda bu t\u00fcr algoritmalar\u0131n nas\u0131l kullan\u0131labilece\u011fine dair vaka analizleri inceledik.<\/li>\n<li>Kodlama becerilerimizi geli\u015ftirmek i\u00e7in kenar durumlar\u0131 ele alma, etkili hata ay\u0131klama ve temiz kod yazma gibi en iyi uygulamalar\u0131 tart\u0131\u015ft\u0131k.<\/li>\n<\/ul>\n<p>Her kodlama problemi, bir \u00f6\u011frenme f\u0131rsat\u0131d\u0131r. \u00d6nemli olan, sadece do\u011fru cevab\u0131 bulmak de\u011fil, ayn\u0131 zamanda o cevaba giden s\u00fcreci anlamak, farkl\u0131 yollar\u0131 ke\u015ffetmek ve bu bilgileri gelecekteki problemlere uygulayabilmektir. Bu pratikler, sizi daha yetkin, d\u00fc\u015f\u00fcnceli ve ba\u015far\u0131l\u0131 bir yaz\u0131l\u0131m geli\u015ftiricisi yapacakt\u0131r. Unutmay\u0131n, s\u00fcrekli \u00f6\u011frenme ve pratik yapma, yaz\u0131l\u0131m d\u00fcnyas\u0131ndaki ba\u015far\u0131n\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt>S1: Bu t\u00fcr sorular\u0131 \u00e7\u00f6zerken nereden ba\u015flamal\u0131y\u0131m?<\/dt>\n<dd>C1: Her zaman problemin kendisini \u00e7ok iyi anlad\u0131\u011f\u0131n\u0131zdan emin olarak ba\u015flay\u0131n. Gerekirse kendi k\u00fc\u00e7\u00fck \u00f6rneklerinizi olu\u015fturun ve beklenen \u00e7\u0131kt\u0131y\u0131 elle hesaplay\u0131n. Ard\u0131ndan, en basit kaba kuvvet \u00e7\u00f6z\u00fcm\u00fcn\u00fc d\u00fc\u015f\u00fcn\u00fcn, bunu kodlay\u0131n ve do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Bu, daha karma\u015f\u0131k optimizasyonlar i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/dd>\n<dt>S2: Algoritma karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 neden \u00f6nemsemeliyim?<\/dt>\n<dd>C2: Algoritma karma\u015f\u0131kl\u0131\u011f\u0131, kodunuzun b\u00fcy\u00fck veri setleri \u00fczerinde ne kadar iyi performans g\u00f6sterece\u011fini belirler. \u00d6zellikle modern uygulamalarda milyarlarca veri noktas\u0131n\u0131 i\u015flemek gerekebilir. Yetersiz bir algoritma, saatler hatta g\u00fcnler s\u00fcren hesaplamalara yol a\u00e7abilirken, optimize bir algoritma ayn\u0131 i\u015fi saniyeler i\u00e7inde tamamlayabilir. Bu, kullan\u0131c\u0131 deneyimi, maliyet ve \u00f6l\u00e7eklenebilirlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/dd>\n<dt>S3: Her zaman en optimize \u00e7\u00f6z\u00fcm\u00fc bulmak zorunda m\u0131y\u0131m?<\/dt>\n<dd>C3: Her zaman en optimize \u00e7\u00f6z\u00fcm\u00fc bulmak zorunda de\u011filsiniz, ancak birden fazla \u00e7\u00f6z\u00fcm\u00fcn varl\u0131\u011f\u0131n\u0131 bilmek ve bunlar\u0131n takaslar\u0131n\u0131 (trade-offs) anlamak \u00f6nemlidir. K\u00fc\u00e7\u00fck veri setleri i\u00e7in basit bir O(N^2) \u00e7\u00f6z\u00fcm yeterli olabilirken, b\u00fcy\u00fck veri setleri veya ger\u00e7ek zamanl\u0131 uygulamalar i\u00e7in O(N) veya O(log N) \u00e7\u00f6z\u00fcmler aramak \u015fartt\u0131r. M\u00fclakatlarda ise genellikle optimum \u00e7\u00f6z\u00fcm beklenir.<\/dd>\n<dt>S4: Bu soruya benzer hangi konular\u0131 \u00e7al\u0131\u015fmal\u0131y\u0131m?<\/dt>\n<dd>C4: \"Soru 71\" gibi problemler genellikle \u015fu konular\u0131 temel al\u0131r: Diziler, alt diziler, \u00f6n ek toplamlar\u0131, hash tablolar\u0131 (hash maps), iki i\u015faret\u00e7i (two pointers) tekni\u011fi ve kayan pencere (sliding window) algoritmalar\u0131. Bu konulara odaklanmak, benzer algoritmik problemlere yakla\u015f\u0131m\u0131n\u0131z\u0131 g\u00fc\u00e7lendirecektir.<\/dd>\n<dt>S5: Negatif say\u0131lar hedef toplam\u0131 nas\u0131l etkiler?<\/dt>\n<dd>C5: Negatif say\u0131lar, alt dizilerin toplam\u0131n\u0131 d\u00fc\u015f\u00fcrerek beklenenden daha karma\u015f\u0131k hale getirebilir. \u00d6rne\u011fin, <code>[2, -2, 5]<\/code> dizisinde hedef 0 ise <code>[2, -2]<\/code> alt dizisi hedefi sa\u011flar. Hash map \u00e7\u00f6z\u00fcm\u00fcm\u00fczdeki <code>sumCountMap.set(0, 1)<\/code> ba\u015flang\u0131c\u0131 ve <code>currentSum - targetSum<\/code> mant\u0131\u011f\u0131, negatif say\u0131lar\u0131 ve s\u0131f\u0131r hedef toplam\u0131n\u0131 do\u011fru bir \u015fekilde ele almam\u0131z\u0131 sa\u011flar. Bu t\u00fcr kenar durumlar\u0131 test etmek, algoritman\u0131n sa\u011flaml\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi&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-35878","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>Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#039;e Kapsaml\u0131 Bir Yakla\u015f\u0131m<\/title>\n<meta name=\"description\" content=\"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, &quot;Coding Challenge Practice - Question 71&quot; ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.\" \/>\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\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#039;e Kapsaml\u0131 Bir Yakla\u015f\u0131m\" \/>\n<meta property=\"og:description\" content=\"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, &quot;Coding Challenge Practice - Question 71&quot; ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T23:01:06+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=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#8217;e Kapsaml\u0131 Bir Yakla\u015f\u0131m\",\"datePublished\":\"2025-12-04T23:01:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\"},\"wordCount\":4402,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\",\"name\":\"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71'e Kapsaml\u0131 Bir Yakla\u015f\u0131m\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-04T23:01:06+00:00\",\"description\":\"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, \\\"Coding Challenge Practice - Question 71\\\" ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#8217;e Kapsaml\u0131 Bir Yakla\u015f\u0131m\"}]},{\"@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":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71'e Kapsaml\u0131 Bir Yakla\u015f\u0131m","description":"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, \"Coding Challenge Practice - Question 71\" ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.","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\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/","og_locale":"tr_TR","og_type":"article","og_title":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71'e Kapsaml\u0131 Bir Yakla\u015f\u0131m","og_description":"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, \"Coding Challenge Practice - Question 71\" ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.","og_url":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-04T23:01:06+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#8217;e Kapsaml\u0131 Bir Yakla\u015f\u0131m","datePublished":"2025-12-04T23:01:06+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/"},"wordCount":4402,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/","url":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/","name":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71'e Kapsaml\u0131 Bir Yakla\u015f\u0131m","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-04T23:01:06+00:00","description":"Kodlama m\u00fclakatlar\u0131 ve rekabet\u00e7i programlama d\u00fcnyas\u0131nda s\u0131k\u00e7a kar\u015f\u0131m\u0131za \u00e7\u0131kan algoritmik problemler, teknik bilgi birikimimizi ve problem \u00e7\u00f6zme yetene\u011fimizi s\u0131nayan \u00f6nemli ara\u00e7lard\u0131r. Peki, karma\u015f\u0131k g\u00f6r\u00fcnen bu sorular\u0131 etkili bir \u015fekilde nas\u0131l \u00e7\u00f6zebilir ve performans optimizasyonunu nas\u0131l sa\u011flayabiliriz? Bu makalede, \"Coding Challenge Practice - Question 71\" ba\u015fl\u0131\u011f\u0131 alt\u0131nda, belirli bir hedef toplama ula\u015fan ard\u0131\u015f\u0131k alt dizilerin say\u0131s\u0131n\u0131 bulma problemini ele alarak, s\u0131f\u0131rdan en optimize \u00e7\u00f6z\u00fcme ad\u0131m ad\u0131m ilerleyece\u011fiz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kodlama-yarismasi-pratigi-soru-71e-kapsamli-bir-yaklasim\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kodlama Yar\u0131\u015fmas\u0131 Prati\u011fi: Soru 71&#8217;e Kapsaml\u0131 Bir Yakla\u015f\u0131m"}]},{"@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\/35878","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=35878"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35878\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}