Takip et

LeetCode 54: Spiral Matris – JavaScript Çözümü

LeetCode 54: Spiral Matris – JavaScript Çözümü

Merhaba! Fatih Soysal olarak, bugün sizlerle LeetCode’un oldukça popüler bir probleminden, 54. problem olan Spiral Matris probleminden ve JavaScript çözümünden bahsedeceğim. Bu problemde, verilen bir matrisi spiral şekilde dolaşarak elemanlarını sıralı bir dizi olarak döndürmemiz gerekiyor. Öncelikle problemi daha iyi anlamak için bir örneğe bakalım.

Örnek:

Girdi: [[1,2,3],[4,5,6],[7,8,9]]

Çıktı: [1,2,3,6,9,8,7,4,5]

Bu örnekte, matris spiral şekilde dolaşılıyor ve elemanlar sırayla diziye ekleniyor. Peki bu problemi nasıl çözebiliriz?

Problem Çözümü:

Bu problemi çözmek için birkaç farklı yaklaşım kullanılabilir. Ancak en yaygın ve anlaşılır yöntemlerden biri, matrisin sınırlarını takip ederek spiral bir şekilde dolaşmaktır. Bu yöntemi JavaScript ile kodlayalım. Öncelikle, matrisin boyutlarını ve sınırlarını tutan değişkenler tanımlıyoruz. Daha sonra, döngüler kullanarak matrisin dış kenarını takip ediyor ve elemanları diziye ekliyoruz. Her bir turda, sınırları daraltarak matrisin içine doğru ilerliyoruz. Bu işlem, matrisin ortasına ulaşana kadar tekrarlanıyor.


/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function(matrix) {
    const result = [];
    let top = 0, bottom = matrix.length - 1;
    let left = 0, right = matrix[0].length - 1;
    let dir = 0; // 0: right, 1: down, 2: left, 3: up

    while (top <= bottom && left <= right) {
        if (dir === 0) {
            for (let i = left; i <= right; i++) {
                result.push(matrix[top][i]);
            }
            top++;
        } else if (dir === 1) {
            for (let i = top; i <= bottom; i++) {
                result.push(matrix[i][right]);
            }
            right--;
        } else if (dir === 2) {
            for (let i = right; i >= left; i--) {
                result.push(matrix[bottom][i]);
            }
            bottom--;
        } else if (dir === 3) {
            for (let i = bottom; i >= top; i--) {
                result.push(matrix[i][left]);
            }
            left++;
        }
        dir = (dir + 1) % 4;
    }
    return result;
};

Bu kod, matrisi dört yönde (sağ, aşağı, sol, yukarı) dolaşarak elemanları sırayla diziye ekler. Sonuç olarak, spiral şekilde dolaşılmış matrisin elemanlarını içeren bir dizi elde ederiz. Bu kodun anlaşılırlığı için, değişkenlerin açıklayıcı isimler kullanılmış ve kodun her bölümü açık bir şekilde yorumlanmıştır. Ayrıca, döngüler ve koşulların mantığını takip etmek oldukça kolaydır.

Bu çözümün zaman karmaşıklığı O(m*n) , burada m ve n sırasıyla matrisin satır ve sütun sayısıdır. Bu, matrisin her elemanının bir kez ziyaret edilmesi gerektiği anlamına gelir. Uzun ve karmaşık matrislerde bile bu çözüm oldukça verimlidir.

Umarım bu makale size yardımcı olmuştur. Daha fazla LeetCode çözümü ve diğer yazılım geliştirme konuları için fatihsoysal.com adresini ziyaret edebilirsiniz. Ayrıca, JavaScript öğrenmek için çeşitli online kaynaklardan faydalanabilirsiniz. Örneğin, Mozilla Developer Network harika bir başlangıç noktası olabilir.

#Etiketler

#LeetCode #JavaScript #SpiralMatrix #Algoritma #Programlama #Kodlama #FatihSoysal #ProblemÇözümü #YazılımGeliştirme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık