在本文中,我们有一个包含不同元素的数组。我们需要打印数组中具有相同绝对值的正负值对,并按排序顺序打印它们,例如 -
Input : arr[] = { 1, -1, 11, 12, 56, 77, -56, -12, -88}
Output : -1 1 -12 12 -56 56
Input : arr[] = {30, 40, 50, 77, -51, -50, -40}
Output : -40 40 -50 50
登录后复制
寻找解决方案的方法
我们首先想到的方法是蛮力法,然后我们还想出了一种称为高效法的方法。我们将讨论这两种方法。
蛮力法
在这种方法中,我们将用一个索引遍历数组,并找到相同的绝对值但不同的索引。
示例
#include
using namespace std;
int main() {
int arr[] = { 1, -1, 11, 12, 56, 77, -56, -12, -88 };
int n = sizeof(arr)/sizeof(int); // size of our array.
vector nums; // the present pairs.
for(int i = 0; i < n; i++) {
for(int j = i+1; j < n; j++) {
if(abs(arr[j]) == abs(arr[i])) { // finding the pairs.
nums.push_back(abs(arr[i]));
break;
// if we found the pair then we can just break as there are distinct elements in the array.
}
}
}
sort(nums.begin(), nums.end());
for(auto x : nums) // printing the pairs.
cout