Menu
Coddy logo textTech

Practice #5

Coddy'nin Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 kursunda ders 14 / 14.

challenge icon

Görev

Kolay

Sıralanmış bir tam sayı dizisi arr (sıralı bir çift yönlü bağlı listenin değerleri) ve bir tam sayı target verildiğinde, i < j ve arr[i] + arr[j] == target koşulunu sağlayan (i, j) dizin çiftlerinin sayısını döndüren bir countPairs fonksiyonu yazın.

Girdinin yinelenen değerler içermediğini varsayın.

Bu problemi çözmek için bir çift yönlü bağlı liste kullanın! Her iki uçtan içe doğru hareket eden iki işaretçi (pointers) kullanın.

DoublyLinkedList sınıfını kullanmalısınız (node.<ext> ile birlikte doublylinkedlist.<ext> dosyasında sağlanmıştır) — sonucu hesaplamak için dizilerin ters çevrilmesi (reverse), dilimleme (slicing), sıralama (sort) veya standart kütüphane liste işlemleri gibi dile özgü yerleşik işlevleri kullanmayın.

Kendin dene

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line1[8192];
    char line2[64];
    if (!fgets(line1, sizeof(line1), stdin)) line1[0] = '\0';
    if (!fgets(line2, sizeof(line2), stdin)) line2[0] = '\0';
    int arr[4096];
    int len = 0;
    char* tok = strtok(line1, " \t\r\n");
    while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int n = atoi(line2);
    int r = countPairs(arr, len, n);
printf("%d\n", r);
    return 0;
}

Çift Yönlü Bağlı Liste - Veri Yapıları Serisi #6 bölümündeki tüm dersler