logo

قم بعكس المصفوفة دون استخدام علامة الطرح "-" في أي مكان في الكود

نظرا لمجموعة المهمة هي عكس المصفوفة دون استخدام علامة الطرح "-" في أي مكان في التعليمات البرمجية الخاصة بك. ليس من الصعب عكس المصفوفة ولكن الشيء الرئيسي هو عدم استخدام عامل التشغيل '-'.

موصى به: الرجاء حلها على " يمارس 'أولاً قبل الانتقال إلى الحل.

سئل في: مقابلة ضفدع القمر

فيما يلي طرق مختلفة: 



الطريقة الأولى: 

  1. تخزين عناصر المصفوفة في ملف ناقلات في C++ . 
  2. ثم قم بعكس المتجه باستخدام وظائف محددة مسبقًا. 
  3. ثم قم بتخزين العناصر المعكوسة في المصفوفة مرة أخرى.

الطريقة الثانية: 

  1. تخزين عناصر المصفوفة في ملف كومة . 
  2. نظرًا لأن المكدس يتبع Last In First Out حتى نتمكن من تخزين العناصر من أعلى المكدس في المصفوفة التي ستكون نفسها بطريقة عكسية. 

الطريقة الثالثة:  

  1. الفكرة في هذه الطريقة هي استخدام إشارة سالبة ولكن عن طريق تخزينها في متغير. 
  2. باستخدام هذه العبارة x = (INT_MIN/INT_MAX) نحصل على -1 في المتغير x. 
  3. نظرًا لأن INT_MIN وINT_MAX لهما نفس القيم من الإشارات المتضادة، فعند تقسيمهما نحصل على -1. 
  4. ثم يمكن استخدام "x" في إنقاص الفهرس من الأخير.

تطبيق:

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> 

الإخراج
6 1 2 7 3 5 

تعقيد الوقت: على)
المساحة المساعدة: O(1)

الطريقة الرابعة:  

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 

تطبيق:

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> 

الإخراج
6 1 2 7 3 5 

تعقيد الوقت: O(n) 
المساحة المساعدة: O(1)

 

إنشاء اختبار