logo

Egy tömb megfordítása anélkül, hogy a kódban bárhol „-” kivonójelet használna

Adott egy tömb a feladat az megfordítja a tömböt anélkül, hogy a kódban bárhol használna „-” kivonási jelet. Nem nehéz megfordítani egy tömböt, de a lényeg az, hogy ne használjunk '-' operátort.

excel dátum különbség
Javasolt: Kérjük, oldja meg a következőn: GYAKORLAT ' először, mielőtt rátérnénk a megoldásra.

Megkérdezték: Holdbéka interjú

Az alábbiakban különböző megközelítéseket mutatunk be: 



1. módszer: 

  1. Tárolja a tömbelemeket a vektor C++-ban . 
  2. Ezután fordítsa meg a vektort előre meghatározott függvényekkel. 
  3. Ezután tárolja a fordított elemeket a tömbben vissza.

2. módszer: 

  1. Tárolja a tömbelemeket a verem . 
  2. Mivel a verem a Last In First Out parancsot követi, így a verem tetejéről származó elemeket tárolhatunk a tömbben, amely fordított módon önmaga lesz. 

3. módszer:  

  1. Ebben a módszerben az az ötlet, hogy negatív előjelet használjunk, de azt változóban tároljuk. 
  2. Ezzel az x = (INT_MIN/INT_MAX) utasítással -1-et kapunk egy x változóban. 
  3. Mivel az INT_MIN és INT_MAX ugyanazokkal az értékekkel rendelkezik, csak ellentétes előjelű, így elosztva -1-et ad. 
  4. Ezután az 'x' használható az index csökkentésére az utolsótól.

Végrehajtás:

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> 

Kimenet
6 1 2 7 3 5 

Időbeli összetettség: On)
Segédtér: O(1)

megkeresem az iphone-omat androidról

4. módszer:  

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 

Végrehajtás:

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> 

Kimenet
6 1 2 7 3 5 

Időbonyolultság: O(n) 
Segédtér: O(1)

 

Kvíz létrehozása