logo

Odwróć tablicę bez użycia znaku odejmowania „-” w dowolnym miejscu kodu

Biorąc pod uwagę tablicę, jaką jest zadanie odwrócić tablicę bez użycia znaku odejmowania „-” w dowolnym miejscu kodu. Odwrócenie tablicy nie jest trudne, ale najważniejsze jest, aby nie używać operatora „-”.

Zalecane: Proszę rozwiązać to na ' PRAKTYKA ', zanim przejdziemy do rozwiązania.

Zapytany w: Wywiad z Księżycową Żabą

Poniżej znajdują się różne podejścia: 



Metoda 1: 

  1. Przechowuj elementy tablicy w a wektor w C++ . 
  2. Następnie odwróć wektor, korzystając z predefiniowanych funkcji. 
  3. Następnie zapisz odwrócone elementy w tablicy z powrotem.

Metoda 2: 

  1. Przechowuj elementy tablicy w a stos . 
  2. Ponieważ stos podąża za Last In First Out, możemy przechowywać elementy z góry stosu w tablicy, która sama będzie w odwrotny sposób. 

Metoda 3:  

  1. W tej metodzie chodzi o użycie znaku ujemnego, ale poprzez zapisanie go w zmiennej. 
  2. Używając tej instrukcji x = (INT_MIN/INT_MAX) otrzymujemy -1 w zmiennej x. 
  3. Ponieważ INT_MIN i INT_MAX mają te same wartości, tylko przeciwne znaki, więc po ich podzieleniu otrzymamy -1. 
  4. Następnie można użyć „x” w celu zmniejszenia indeksu od ostatniego.

Realizacja:

C++
// C++ program to reverse an array without // using '-' sign #include    using namespace std; // Function to reverse array void reverseArray(int arr[] int n) {  // Trick to assign -1 to a variable  int x = (INT_MIN / INT_MAX);  // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  swap(arr[i] arr[n + (x * i) + x]); } // Drivers code int main() {  int arr[] = { 5 3 7 2 1 6 };  int n = sizeof(arr) / sizeof(arr[0]);  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++)  cout << arr[i] << ' ';  return 0; } 
Java
// Java program to reverse an array without // using '-' sign class GFG {  // Function to reverse array  static void reverseArray(int arr[] int n)  {  // Trick to assign -1 to a variable  int x = (Integer.MIN_VALUE / Integer.MAX_VALUE);  // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  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;  }  // Drivers code  public static void main(String[] args)  {  int arr[] = { 5 3 7 2 1 6 };  int n = arr.length;  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++)  System.out.print(arr[i] + ' ');  } } // This code has been contributed by 29AjayKumar 
Python3
# Python program to reverse an array without # using '-' sign # Function to reverse array def reverseArray(arr n): import sys # Trick to assign - 1 to a variable x = -sys.maxsize // sys.maxsize # Reverse array in simple manner for i in range(n//2): # Swap ith index value with (n-i-1)th # index value arr[i] arr[n + (x*i) + x] = arr[n + (x*i) + x] arr[i] # Driver code if __name__ == '__main__': arr = [5 3 7 2 1 6] n = len(arr) reverseArray(arr n) # print the reversed array for i in range(n): print(arr[i] end=' ') # This code is contributed by # sanjeev2552 
C#
// C# program to reverse an array without // using '-' sign using System; class GFG {  // Function to reverse array  static void reverseArray(int[] arr int n)  {  // Trick to assign -1 to a variable  int x = (int.MinValue / int.MaxValue);  // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  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;  }  // Drivers code  public static void Main()  {  int[] arr = { 5 3 7 2 1 6 };  int n = arr.Length;  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++)  Console.Write(arr[i] + ' ');  } } /* This code contributed by PrinciRaj1992 */ 
PHP
 // PHP program to reverse an array without // using '-' sign // Function to reverse array function reverseArray(&$arr $n) { // Trick to assign -1 to a variable $x = (PHP_INT_MIN / PHP_INT_MAX); // Reverse array in simple manner for ($i = 0; $i < $n / 2; $i++) // Swap ith index value with (n-i-1)th // index value swap($arr $i $n + ($x * $i) + $x); } function swap(&$arr $i $j) { $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; return $arr; } // Drivers code $arr = array( 5 3 7 2 1 6 ); $n = sizeof($arr); reverseArray($arr $n); // print the reversed array for ($i = 0; $i < $n; $i++) echo($arr[$i] . ' '); // This code is contributed by Code_Mech 
JavaScript
<script>  //javascript program to reverse an array without  // using '-' sign  // Function to reverse array  function reversearray(arrn)  {  // Trick to assign -1 to a variable  let x = parseInt(-2147483648 / 2147483647 10);  // Reverse array in simple manner  for (let i = 0; i < parseInt(n / 2 10); i++)  {  // Swap ith index value with (n-i-1)th  // index value  let temp = arr[i];  arr[i] = arr[n + (x * i) + x];  arr[n + (x * i) + x] = temp;  }  }  let arr = [ 5 3 7 2 1 6 ];  let n = arr.length;  reversearray(arr n);  // print the reversed array  for (let i = 0; i < n; i++)  document.write(arr[i] +' '); // This code is contributed by vaibhavrabadiya117. </script> 

Wyjście
6 1 2 7 3 5 

Złożoność czasowa: NA)
Przestrzeń pomocnicza: O(1)

Metoda 4:  

In this method 4 the idea is to use bitwise operator to implement subtraction i.e.  A - B = A + ~B + 1  so i-- can be written as i = i +~1 +1 

Realizacja:

C++
// C++ program to reverse an array without // using '-' sign #include    using namespace std; // Function to reverse array void reverseArray(int arr[] int n) {  // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  // Note : A - B = A + ~B + 1  // So n - i = n + ~i + 1 then  // n - i - 1 = (n + ~i + 1) + ~1 + 1  swap(arr[i] arr[(n + ~i + 1) + ~1 + 1]); } // Driver code int main() {  int arr[] = { 5 3 7 2 1 6 };  int n = sizeof(arr) / sizeof(arr[0]);  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++)  cout << arr[i] << ' ';  return 0; } 
Java
// Java program to reverse an array without // using '-' sign import java.util.Arrays; class GFG {  // Function to reverse array  static void reverseArray(int arr[] int n)  {    // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  // Note : A - B = A + ~B + 1  // So n - i = n + ~i + 1 then  // 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;  }  // Driver code  public static void main(String args[])  {  int arr[] = { 5 3 7 2 1 6 };  int n = arr.length;  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++) {  System.out.print(arr[i] + ' ');  }  } } // This code contributed by Rajput-Ji 
Python3
# Python program to reverse an array without  # using '-' sign  # Function to reverse array  def reverseArray(arr n): # Reverse array in simple manner  for i in range(n//2): # Swap ith index value with (n-i-1)th  # index value  # Note : A - B = A + ~B + 1  # So n - i = n + ~i + 1 then  # n - i - 1 = (n + ~i + 1) + ~1 + 1  arr[i] arr[(n + ~i + 1) + ~1 + 1] = arr[(n + ~i + 1) + ~1 + 1]arr[i] # Driver code  arr = [ 5 3 7 2 1 6 ] n = len(arr) reverseArray(arr n) # print the reversed array  for i in range(n): print(arr[i]end=' ') # This code is contributed by ankush_953 
C#
// C# program to reverse an array without // using '-' sign using System; class GFG {  // Function to reverse array  static void reverseArray(int[] arr int n)  {  // Reverse array in simple manner  for (int i = 0; i < n / 2; i++)  // Swap ith index value with (n-i-1)th  // index value  // Note : A - B = A + ~B + 1  // So n - i = n + ~i + 1 then  // 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;  }  // Driver code  public static void Main(String[] args)  {  int[] arr = { 5 3 7 2 1 6 };  int n = arr.Length;  reverseArray(arr n);  // print the reversed array  for (int i = 0; i < n; i++) {  Console.Write(arr[i] + ' ');  }  } } // This code has been contributed by 29AjayKumar 
PHP
 // PHP program to reverse an array without // using '-' sign // Function to reverse array function reverseArray(&$arr $n) { // Reverse array in simple manner for ($i = 0; $i < $n / 2; $i++) // Swap ith index value with (n-i-1)th // index value // Note : A - B = A + ~B + 1 // So n - i = n + ~i + 1 then // 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; } // Driver code { $arr = array( 5 3 7 2 1 6 ); $n = sizeof($arr); reverseArray($arr $n); // print the reversed array for ($i = 0; $i < $n; $i++) { echo($arr[$i] . ' '); } } // This code contributed by Code_Mech 
JavaScript
<script>  // Javascript program to reverse an array without using '-' sign    // Function to reverse array  function reverseArray(arr n)  {    // Reverse array in simple manner  for (let i = 0; i < parseInt(n / 2 10); i++)    // Swap ith index value with (n-i-1)th  // index value  // Note : A - B = A + ~B + 1  // So n - i = n + ~i + 1 then  // n - i - 1 = (n + ~i + 1) + ~1 + 1  {  swap(arr i (n + ~i + 1) + ~1 + 1);  }  }    function swap(arr i j)  {  let temp = arr[i];  arr[i] = arr[j];  arr[j] = temp;  return arr;  }    let arr = [ 5 3 7 2 1 6 ];  let n = arr.length;  reverseArray(arr n);  // print the reversed array  for (let i = 0; i < n; i++) {  document.write(arr[i] + ' ');  }    // This code is contributed by mukesh07. </script> 

Wyjście
6 1 2 7 3 5 

Złożoność czasowa: O(n) 
Przestrzeń pomocnicza: O(1)

 

Utwórz quiz