Ad
  • Custom User Avatar

    kindly do not post solutions like this, as it goes to the main comment thread where nobody wants to see it

  • Custom User Avatar

    #include <stddef.h>
    #include <stdlib.h>

    int *twin_sum_solutions(int *input, size_t input_len, size_t *output_len) {
    if (input_len < 2) {
    *output_len = 0;
    return NULL; // Return NULL if there are no pairs
    }

    int *res = malloc(input_len * sizeof(int));  // Allocate memory for the result
    if (!res) {
        *output_len = 0;
        return NULL;  // Return NULL if memory allocation fails
    }
    
    *output_len = 0;  // Initialize the result counter
    
    for (size_t i = 0; i < input_len - 1; i++) {
        if (input[i] == input[i + 1]) {  // Check if it's a matching pair
            res[*output_len] = input[i] * 2;  // Store the "twin sum"
            (*output_len)++;
            i++;  // Skip the next element as it's already processed
        }
    }
    
    // Resize the memory to the correct size of results
    int *final_result = realloc(res, *output_len * sizeof(int));
    
    // If realloc fails and there are results, free the memory
    if (!final_result && *output_len > 0) {
        free(res);
        *output_len = 0;
        return NULL;
    }
    
    return final_result;  // Return the result (or NULL if no results)
    

    }