Рубрики

Обратный массив без использования знака вычитания '-' в любом месте кода

Для данного массива задача состоит в обращении массива без использования знака вычитания «-» в любом месте вашего кода. Нетрудно перевернуть массив, но главное — не использовать оператор «-».

Спросил в: интервью Moonfrog

Ниже приведены различные подходы:

Способ 1:
1- Сохранение элементов массива в вектор в C ++ .
2. Затем поверните вектор, используя предопределенные функции.
3- Затем сохраните обратные элементы в массиве обратно.

Способ 2:
1- Хранить элементы массива в стеке .
2- Поскольку стек следует Last In First Out, мы можем хранить элементы из
вершина стека в массив, который будет сам по себе в обратном порядке.

Способ 3:
1. В этом методе идея состоит в том, чтобы использовать отрицательный знак, но сохраняя его в переменной.
2- Используя этот оператор x = (INT_MIN / INT_MAX), мы получаем -1 в переменной x.
3- Поскольку INT_MIN и INT_MAX имеют одинаковые значения только с противоположными знаками, то при делении их это даст -1.
4- Тогда «x» можно использовать для уменьшения индекса с последнего.

C ++

// C ++ программа для обратного массива без
// используя знак "-"
#include <bits/stdc++.h>

using namespace std;

  
// Функция для обратного массива

void reverseArray(int arr[], int n)

{

    // Хитрость для назначения -1 переменной

    int x = (INT_MIN / INT_MAX);

  

    // Обратный массив простым способом

    for (int i = 0; i < n / 2; i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        swap(arr[i], arr[n + (x * i) + x]);

}

  
// Код драйвера

int main()

{

    int arr[] = { 5, 3, 7, 2, 1, 6 };

    int n = sizeof(arr) / sizeof(arr[0]);

  

    reverseArray(arr, n);

  

    // выводим обратный массив

    for (int i = 0; i < n; i++)

        cout << arr[i] << " ";

  

    return 0;

}

Джава

// Java программа для обращения к массиву без
// используя знак "-"

class GFG {

  

    // Функция для обратного массива

    static void reverseArray(int arr[], int n)

    {

        // Хитрость для назначения -1 переменной

        int x = (Integer.MIN_VALUE / Integer.MAX_VALUE);

  

        // Обратный массив простым способом

        for (int i = 0; i < n / 2; i++)

  

            // Меняем значение индекса ih на (ni-1) th

            // значение индекса

            swap(arr, i, n + (x * i) + x);

    }

    static int[] swap(int[] arr, int i, int j)

    {

        int temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

        return arr;

    }

  

    // Код драйвера

    public static void main(String[] args)

    {

        int arr[] = { 5, 3, 7, 2, 1, 6 };

        int n = arr.length;

  

        reverseArray(arr, n);

  

        // выводим обратный массив

        for (int i = 0; i < n; i++)

            System.out.print(arr[i] + " ");

    }

}

  
// Этот код предоставлен 29AjayKumar

python3

# Python программа для обращения к массиву без
# используя знак "-"

  
# Функция для обратного массива

def reverseArray(arr, n):

  

    import sys

  

    # Трюк для назначения - 1 для переменной

    x = -sys.maxsize // sys.maxsize

  

    # Обратный массив простым способом

    for i in range(n//2):

  

        # Поменять значение i-го индекса на (ni-1) th

        # значение индекса

        arr[i], arr[n + (x*i) + x] = arr[n + (x*i) + x], arr[i]

  

  
# Код драйвера

if __name__ == "__main__":

    arr = [5, 3, 7, 2, 1, 6]

    n = len(arr)

  

    reverseArray(arr, n)

  

    # распечатать обратный массив

    for i in range(n):

        print(arr[i], end=" ")

  
# Этот код предоставлен
# sanjeev2552

C #

// C # программа для обратного массива без
// используя знак "-"

using System;

  

class GFG {

  

    // Функция для обратного массива

    static void reverseArray(int[] arr, int n)

    {

        // Хитрость для назначения -1 переменной

        int x = (int.MinValue / int.MaxValue);

  

        // Обратный массив простым способом

        for (int i = 0; i < n / 2; i++)

  

            // Меняем значение индекса ih на (ni-1) th

            // значение индекса

            swap(arr, i, n + (x * i) + x);

    }

  

    static int[] swap(int[] arr, int i, int j)

    {

        int temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

        return arr;

    }

  

    // Код драйвера

    public static void Main()

    {

        int[] arr = { 5, 3, 7, 2, 1, 6 };

        int n = arr.Length;

  

        reverseArray(arr, n);

  

        // выводим обратный массив

        for (int i = 0; i < n; i++)

            Console.Write(arr[i] + " ");

    }

}

  
/ * Этот код предоставлен PrinciRaj1992 * /

PHP

<?PHP
// PHP программа для обращения массива без
// используя знак "-"

  
// Функция для обратного массива

function reverseArray(&$arr, $n)

{

    // Хитрость для назначения -1 переменной

    $x = (PHP_INT_MIN / PHP_INT_MAX);

  

    // Обратный массив простым способом

    for ($i = 0; $i < $n / 2; $i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        swap($arr, $i, $n + ($x * $i) + $x);

}

  

function swap(&$arr, $i, $j)

{

    $temp = $arr[$i];

    $arr[$i] = $arr[$j];

    $arr[$j] = $temp;

    return $arr;

}

  
// Код драйвера

$arr = array( 5, 3, 7, 2, 1, 6 );

$n = sizeof($arr);

  

reverseArray($arr, $n);

  
// выводим обратный массив

for ($i = 0; $i < $n; $i++)

    echo($arr[$i] . " ");

  
// Этот код предоставлен Code_Mech

Выход:

6 1 2 7 3 5

Способ 4:
В этом методе 4 идея состоит в том, чтобы использовать побитовый оператор для реализации вычитания, т.е.
A — B = A + ~ B + 1
поэтому я могу записать как i = i + ~ 1 +1

C ++

// C ++ программа для обратного массива без
// используя знак "-"
#include <bits/stdc++.h>

using namespace std;

  
// Функция для обратного массива

void reverseArray(int arr[], int n)

{

  

    // Обратный массив простым способом

    for (int i = 0; i < n / 2; i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        // Примечание: A - B = A + ~ B + 1

        // Итак, n - i = n + ~ i + 1

        // n - i - 1 = (n + ~ i + 1) + ~ 1 + 1

        swap(arr[i], arr[(n + ~i + 1) + ~1 + 1]);

}

  
// Код драйвера

int main()

{

    int arr[] = { 5, 3, 7, 2, 1, 6 };

    int n = sizeof(arr) / sizeof(arr[0]);

  

    reverseArray(arr, n);

  

    // выводим обратный массив

    for (int i = 0; i < n; i++)

        cout << arr[i] << " ";

  

    return 0;

}

Джава

// Java программа для обращения к массиву без
// используя знак "-"

import java.util.Arrays;

  

class GFG {

  

    // Функция для обратного массива

    static void reverseArray(int arr[], int n)

    {

     

        // Обратный массив простым способом

        for (int i = 0; i < n / 2; i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        // Примечание: A - B = A + ~ B + 1

        // Итак, n - i = n + ~ i + 1

        // n - i - 1 = (n + ~ i + 1) + ~ 1 + 1

        {

            swap(arr, i, (n + ~i + 1) + ~1 + 1);

        }

    }

  

    static int[] swap(int[] arr, int i, int j)

    {

        int temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

        return arr;

    }

  

    // Код драйвера

    public static void main(String args[])

    {

        int arr[] = { 5, 3, 7, 2, 1, 6 };

        int n = arr.length;

  

        reverseArray(arr, n);

  

        // выводим обратный массив

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i] + " ");

        }

    }

}

  
// Этот код предоставлен Rajput-Ji

python3

# Python программа для обращения к массиву без
# используя знак "-"

  
# Функция для обратного массива

def reverseArray(arr, n):

  

    # Обратный массив простым способом

    for i in range(n//2): 

  

        # Поменять значение i-го индекса на (ni-1) th

        # значение индекса

        # Примечание: A - B = A + ~ B + 1

        # Тогда n - i = n + ~ i + 1

        # n - i - 1 = (n + ~ i + 1) + ~ 1 + 1

        arr[i], arr[(n + ~i + 1) + ~1 + 1] = arr[(n + ~i + 1) + ~1 + 1],arr[i]

  
# Код драйвера

  

arr = [ 5, 3, 7, 2, 1, 6

n = len(arr)

  
reverseArray(arr, n)

  
# распечатать обратный массив

for i in range(n):

    print(arr[i],end=" ")

  
# Этот код предоставлен ankush_953

C #

// C # программа для обратного массива без
// используя знак "-"

using System;

  

class GFG {

  

    // Функция для обратного массива

    static void reverseArray(int[] arr, int n)

    {

  

        // Обратный массив простым способом

        for (int i = 0; i < n / 2; i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        // Примечание: A - B = A + ~ B + 1

        // Итак, n - i = n + ~ i + 1

        // n - i - 1 = (n + ~ i + 1) + ~ 1 + 1

        {

            swap(arr, i, (n + ~i + 1) + ~1 + 1);

        }

    }

  

    static int[] swap(int[] arr, int i, int j)

    {

        int temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

        return arr;

    }

  

    // Код драйвера

    public static void Main(String[] args)

    {

        int[] arr = { 5, 3, 7, 2, 1, 6 };

        int n = arr.Length;

  

        reverseArray(arr, n);

  

        // выводим обратный массив

        for (int i = 0; i < n; i++) {

            Console.Write(arr[i] + " ");

        }

    }

}

  
// Этот код предоставлен 29AjayKumar

PHP

<?PHP

    // PHP программа для обращения массива без

    // используя знак "-"

      

    // Функция для обратного массива

    function reverseArray(&$arr, $n)

    {

  

        // Обратный массив простым способом

        for ($i = 0; $i < $n / 2; $i++)

  

        // Меняем значение индекса ih на (ni-1) th

        // значение индекса

        // Примечание: A - B = A + ~ B + 1

        // Итак, n - i = n + ~ i + 1

        // n - i - 1 = (n + ~ i + 1) + 1 + 1

        {

            swap($arr, $i, ($n + ~$i + 1) + ~1 + 1);

        }

    }

  

    function swap(&$arr, $i, $j)

    {

        $temp = $arr[$i];

        $arr[$i] = $arr[$j];

        $arr[$j] = $temp;

        return $arr;

    }

  

    // Код драйвера

    {

        $arr = array( 5, 3, 7, 2, 1, 6 );

        $n = sizeof($arr);

  

        reverseArray($arr, $n);

  

        // выводим обратный массив

        for ($i = 0; $i < $n; $i++)

        {

            echo($arr[$i] . " ");

        }

    }

  
// Этот код предоставлен Code_Mech

Выход:

6 1 2 7 3 5

Эта статья предоставлена Сахилом Чхаброй . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Обратный массив без использования знака вычитания '-' в любом месте кода

0.00 (0%) 0 votes