Monday, October 12, 2020

13-10 HACKERRANK - C PROGRAMMING - ARRAY REVERSAL

QUESTION-  

SOLUTION-

DISCUSSION - GOOD LOGIC

/* Write the logic to reverse the array. */
    int temp;
    for (i = 0; i < num / 2; i++) {
        temp = (int) *(arr + num - i - 1);
        *(arr + num - i - 1) = *(arr + i);
        *(arr + i) = temp;
    }    
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, *arr, *arr1, i;
    scanf("%d", &num);
    arr = (int*) malloc(num * sizeof(int));
    arr1 = (int*) malloc(num * sizeof(int));
    for(i = 0; i < num; i++) {
        scanf("%d", arr + i);
        arr1[i] = arr[i];
    }
    for(i = 0;  i < num; i++){
        arr[i] = arr1[num - 1- i];
    }

    for(i = 0; i < num; i++)
        printf("%d ", *(arr + i));
    return 0;
}

PROBLEM SETTERS SOLUTION -

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, *arr, i;
    scanf("%d", &num);
    arr = (int*) malloc(num * sizeof(int));
    for(i = 0; i < num; i++) {
        scanf("%d", arr + i);
    }
    /* Write the logic to reverse the array. */ 
    int* left_ptr = arr;
    int* right_ptr;
    int temp;
    for(i = 0; i < num; i++) {
        if(i == num - 1) {
            right_ptr = (arr + i);
        }
    }
    while(left_ptr < right_ptr) {
        temp = *right_ptr;
        *right_ptr = *left_ptr;
        *left_ptr = temp;
        right_ptr--;
        left_ptr++;
    }
      
    for(i = 0; i < num; i++) {
        printf("%d ", *(arr + i));
    }
    free(arr);
    return 0;
}

No comments:

Post a Comment

LEETCODE JUNE 2021 DAILY CODING CHALLENGE

 LEETCODE JUNE 2021 DAILY CODING CHALLENGE JUNE 1 JUNE 2 JUNE 3 JUNE 4 JUNE 5 Maximum Performance of a Team LINK You are given two integers ...