Məzmuna keçin
  • Kateqoriyalar
  • Ən yeni
  • Teqlər
  • Populyar
Yığmaq
Brend loqosu
  1. Əsas səhifə
  2. Kompüter elmi
  3. Problem həlli yanaşması
  4. Multiple pointers nümunəsi

Multiple pointers nümunəsi

Planlaşdırılıb Sabitlənib Kilidlənib Köçürülüb Problem həlli yanaşması
multiplepointersproblemsolving
1 Yazı 1 Yazarlar 16 Baxış
  • Ən köhnədən yeniyə
  • Ən yenidən köhnəyə
  • Ən çox səs
Cavab ver
  • Mövzu olaraq cavablandır
🔑 Daxil ol
Bu mövzu silindi. Yalnız mövzu idarəçiliyi imtiyazlarına malik olan istifadəçilər onu görə bilər.
  • C Oflayn
    C Oflayn
    codex
    2025 M03 16 12:50 üzərində yazmışdı sonuncu dəfə tərəfindən redaktə edilib
    #1

    Multiple pointers nümunəsi indeks və ya mövqeyə uyğun olaraq göstəricilər və ya dəyərlər yaratmaq və müəyyən şərtlərə əsasən başlanğıc, son və ya orta hissəyə doğru hərəkət etdirmək üsuludur.

    Problem

    Bir sumZero funksiyası yazın. Bu funksiya sıralanmış tam ədədlər massivini qəbul edir. Funksiya cəmi 0 olan ilk cütlüyü tapmalıdır. Əgər belə bir cütlük mövcuddursa, onu massiv şəklində qaytarsın, əks halda undefined qaytarsın.


    Naiv Həll

    Bu üsul massivdəki hər bir elementi digər elementlərlə müqayisə edir. İki for dövrü istifadə olunduğu üçün zaman mürəkkəbliyi O(n²)-dir.

    function sumZero(arr) {
        for (let i = 0; i < arr.length; i++) {
            for (let j = i + 1; j < arr.length; j++) {
                if (arr[i] + arr[j] === 0) {
                    return [arr[i], arr[j]];
                }
            }
        }
    }
    
    sumZero([-4, -3, -2, -1, 0, 1, 2, 5]); 
    

    Çatışmazlıqlar:

    • Massiv çox böyük olduqda performans aşağı düşür.
    • Hər bir elementi digər elementlə müqayisə etdiyimiz üçün lazımsız təkrarlanmalara səbəb olur.

    Multiple Pointer Həlli

    Bu üsulda iki göstərici (pointer) istifadə edirik:

    • Sol pointer (left) – massivdəki ilk elementdən başlayır.
    • Sağ pointer (right) – massivdəki son elementdən başlayır.

    Məntiq:

    • Əgər arr[left] + arr[right] === 0 isə, bu cütlük qaytarılır.
    • Əgər cəmi 0-dan böyükdürsə, sağ pointer (right--) bir vahid sola çəkilir.
    • Əgər cəmi 0-dan kiçikdirsə, sol pointer (left++) bir vahid sağa çəkilir.

    Zaman mürəkkəbliyi O(n) olduğu üçün bu yanaşma daha effektivdir.

    function sumZero(array) {
        let left = 0, right = array.length - 1;
    
        while (left < right) {
            let sum = array[left] + array[right];
    
            if (sum === 0) {
                return [array[left], array[right]];
            } else if (sum > 0) {
                right--;
            } else {
                left++;
            }
        }
    }
    
    sumZero([-4, -3, -2, -1, 0, 1, 2, 5]); 
    

    Üstünlüklər:
    ✅ Yalnız bir while dövrü istifadə etdiyi üçün daha sürətlidir.
    ✅ Yaddaş sərfiyyatı daha azdır.
    ✅ Böyük massivlər üçün effektiv nəticə verir.


    Nəticə

    Multiple pointers nümunəsi çox vaxt O(n²) mürəkkəblikdən O(n) mürəkkəbliyə keçməyə imkan verir. Bu metod xüsusilə sıralanmış massivlərdə istifadə üçün əladır, axtarış və müqayisə məsələlərində performansı artırır.

    1 cavab Son cavab
    • C codex bu mövzunu 2025 M03 16 12:50-də sabitlədi
    Cavab ver
    • Mövzu olaraq cavablandır
    🔑 Daxil ol
    • Ən köhnədən yeniyə
    • Ən yenidən köhnəyə
    • Ən çox səs

    1/1

    2025 M03 16 12:50




    Bilik paylaşdıqca artan bir sərvətdir
    • Daxil ol

    • Sizin hesabınız yoxdur? Qeydiyyatdan keç

    • Axtarış etmək üçün daxil olun və ya qeydiyyatdan keçin.
    1 / 1
    • İlk yazı
      1/1
      Son yazı
    0
    • Kateqoriyalar
    • Ən yeni
    • Teqlər
    • Populyar