打印包含元素正值和负值的所有对

给定一个不同整数的数组,打印数组中存在的数字的正负值的所有对。 注: 成对的顺序无关紧要。 例如:

null
Input: arr[] = { 1, -3, 2, 3, 6, -1 }Output: -1 1 -3 3Input: arr[] = { 4, 8, 9, -4, 1, -1, -8, -9 }Output: -1 1 -4 4 -8 8 -9 9

A. 幼稚的方法 是运行两个循环,即使用外环考虑数组中的每个元素,并使用内循环搜索数组中相应的正/负值。同样,找到所有的配对。这种方法的时间复杂度为O(n 2. ). A. 更好的方法 就是使用 分类 i、 e.首先对数组进行排序,然后对每个负元素进行二进制搜索,以找到对应的(+ve编号)。如果找到了,打印那一对。如果当前元素为正数,则中断该循环,因为之后将出现所有正数。

C++

// CPP program to find pairs of positive
// and negative values present in an array.
#include <bits/stdc++.h>
using namespace std;
void printPairs( int arr[], int n)
{
bool pair_exists = false ;
// Sort the array
sort(arr, arr + n);
// Traverse the array
for ( int i = 0; i < n; i++) {
// For every arr[i] < 0 element,
// do a binary search for arr[i] > 0.
if (arr[i] < 0) {
// If found, print the pair.
if (binary_search(arr, arr + n, -arr[i])) {
cout << arr[i] << ", " << -arr[i] << endl;
pair_exists = true ;
}
}
else
break ;
}
if (pair_exists == false )
cout << "No such pair exists" ;
}
// Driver code
int main()
{
int arr[] = { 4, 8, 9, -4, 1, -1, -8, -9 };
int n = sizeof (arr) / sizeof (arr[0]);
printPairs(arr, n);
return 0;
}


JAVA

// Java program to find pairs
// of positive and negative
// values present in an array.
import java.util.*;
class GFG
{
static void printPairs( int arr[], int n)
{
boolean pair_exists = false ;
// Sort the array
Arrays.sort(arr);
// Traverse the array
for ( int i = 0 ; i < n; i++)
{
// For every arr[i] < 0 element,
// do a binary search for arr[i] > 0.
if (arr[i] < 0 )
{
// If found, print the pair.
if (java.util.Arrays.binarySearch(arr, -arr[i])!=- 1 )
{
System.out.println(arr[i] + ", " + -arr[i] );
pair_exists = true ;
}
}
else
break ;
}
if (pair_exists == false )
System.out.println( "No such pair exists" );
}
// Driver code
public static void main(String args[])
{
int arr[] = { 4 , 8 , 9 , - 4 , 1 , - 1 , - 8 , - 9 };
int n =arr.length;
printPairs(arr, n);
}
}
// This code is contributed
// by Arnab Kundu


Python 3

# Python3 program to find pairs of positive
# and negative values present in an array.
# function for binary search
def binary_search(a, x, lo = 0 , hi = None ):
if hi is None :
hi = len (a)
while lo < hi:
mid = (lo + hi) / / 2
midval = a[mid]
if midval < x:
lo = mid + 1
elif midval > x:
hi = mid
else :
return mid
return - 1
def printPairs(arr, n):
pair_exists = False
# Sort the array
arr.sort()
# Traverse the array
for i in range (n):
# For every arr[i] < 0 element,
# do a binary search for arr[i] > 0.
if (arr[i] < 0 ):
# If found, print the pair.
if (binary_search(arr, - arr[i])):
print (arr[i] , ", " , - arr[i])
pair_exists = True
else :
break
if (pair_exists = = False ):
print ( "No such pair exists" )
# Driver code
if __name__ = = '__main__' :
arr = [ 4 , 8 , 9 , - 4 , 1 , - 1 , - 8 , - 9 ]
n = len (arr)
printPairs(arr, n)
# this code is contributed by ash264


C#

// C# program to find pairs
// of positive and negative
// values present in an array.
using System;
public class GFG{
static void printPairs( int []arr, int n)
{
bool pair_exists = false ;
// Sort the array
Array.Sort(arr);
// Traverse the array
for ( int i = 0; i < n; i++)
{
// For every arr[i] < 0 element,
// do a binary search for arr[i] > 0.
if (arr[i] < 0)
{
// If found, print the pair.
if (Array.BinarySearch(arr, -arr[i])!=-1)
{
Console.WriteLine(arr[i] + ", " + -arr[i] );
pair_exists = true ;
}
}
else
break ;
}
if (pair_exists == false )
Console.WriteLine( "No such pair exists" );
}
// Driver code
public static void Main()
{
int []arr = { 4, 8, 9, -4, 1, -1, -8, -9 };
int n =arr.Length;
printPairs(arr, n);
}
}
// This code is contributed by 29AjayKumar


Javascript

<script>
// JavaScript program to find pairs of positive
// and negative values present in an array.
function printPairs(arr, n) {
let pair_exists = false ;
// Sort the array
arr.sort((a, b) => a - b);
// Traverse the array
for (let i = 0; i < n; i++) {
// For every arr[i] < 0 element,
// do a binary search for arr[i] > 0.
if (arr[i] < 0) {
// If found, print the pair.
if (arr.includes(-arr[i])) {
document.write(arr[i] + ", " + -arr[i] + "<br>" );
pair_exists = true ;
}
}
else
break ;
}
if (pair_exists == false )
document.write( "No such pair exists" );
}
// Driver code
let arr = [4, 8, 9, -4, 1, -1, -8, -9];
let n = arr.length;
printPairs(arr, n);
</script>


输出:

-9, 9-8, 8-4, 4-1, 1

时间复杂性: O(nlogn) 一 有效的方法 就是使用 散列 .以下是所需的步骤:

  • 开始遍历数组。
  • 将所有psoitve值存储在无序的_集中。
  • 检查每个负元素,是否在集合中存在对应的正元素。
  • 如果是,请打印一对
  • 此外,维护一个标志以检查是否不存在这样的对。

C++

// CPP program to find pairs of positive
// and negative values present in an array
#include <bits/stdc++.h>
using namespace std;
// Function to print pairs of positive
// and negative values present in the array
void printPairs( int arr[], int n)
{
unordered_set< int > pairs;
bool pair_exists = false ;
// Store all the positive elements
// in the unordered_set
for ( int i = 0; i < n; i++)
if (arr[i] > 0)
pairs.insert(arr[i]);
// Start traversing the array
for ( int i = 0; i < n; i++) {
// Check if the positive value of current
// element exists in the set or not
if (arr[i] < 0)
if (pairs.find(-arr[i]) != pairs.end())
{ // Print that pair
cout << arr[i] << ", " << -arr[i] << endl;
pair_exists = true ;
}
}
if (pair_exists == false )
cout << "No such pair exists" ;
}
// Driver code
int main()
{
int arr[] = { 4, 8, 9, -4, 1, -1, -8, -9 };
int n = sizeof (arr) / sizeof (arr[0]);
printPairs(arr, n);
return 0;
}


JAVA

// Java program to find pairs of positive
// and negative values present in an array
import java.util.*;
class GFG
{
// Function to print pairs of positive
// and negative values present in the array
static void printPairs( int arr[], int n)
{
Set<Integer> pairs = new HashSet<Integer>();
boolean pair_exists = false ;
// Store all the positive elements
// in the unordered_set
for ( int i = 0 ; i < n; i++)
if (arr[i] > 0 )
pairs.add(arr[i]);
// Start traversing the array
for ( int i = 0 ; i < n; i++)
{
// Check if the positive value of current
// element exists in the set or not
if (arr[i] < 0 )
if (pairs.contains(-arr[i]))
{
// Print that pair
System.out.println(arr[i] + ", " + -arr[i]);
pair_exists = true ;
}
}
if (pair_exists == false )
System.out.println( "No such pair exists" );
}
// Driver code
public static void main(String args[])
{
int arr[] = { 4 , 8 , 9 , - 4 , 1 , - 1 , - 8 , - 9 };
int n = arr.length;
printPairs(arr, n);
}
}
// This code is contributed by Arnab Kundu


Python3

# Python3 program to find pairs of positive
# and negative values present in an array
# Function to print pairs of positive
# and negative values present in the array
def printPairs(arr, n):
pairs = set ()
pair_exists = False
# Store all the positive elements
# in the unordered_set
for i in range ( 0 , n):
if arr[i] > 0 :
pairs.add(arr[i])
# Start traversing the array
for i in range ( 0 , n):
# Check if the positive value of current
# element exists in the set or not
if arr[i] < 0 :
if ( - arr[i]) in pairs:
# Print that pair
print ( "{}, {}" . format (arr[i], - arr[i]))
pair_exists = True
if pair_exists = = False :
print ( "No such pair exists" )
# Driver code
if __name__ = = "__main__" :
arr = [ 4 , 8 , 9 , - 4 , 1 , - 1 , - 8 , - 9 ]
n = len (arr)
printPairs(arr, n)
# This code is contributed by Rituraj Jain


C#

// C# program to find pairs of positive
// and negative values present in an array
using System;
using System.Collections.Generic;
class GFG
{
// Function to print pairs of positive
// and negative values present in the array
static void printPairs( int []arr, int n)
{
HashSet< int > pairs = new HashSet< int >();
bool pair_exists = false ;
// Store all the positive elements
// in the unordered_set
for ( int i = 0; i < n; i++)
if (arr[i] > 0)
pairs.Add(arr[i]);
// Start traversing the array
for ( int i = 0; i < n; i++)
{
// Check if the positive value of current
// element exists in the set or not
if (arr[i] < 0)
if (pairs.Contains(-arr[i]))
{
// Print that pair
Console.WriteLine(arr[i] + ", " + -arr[i]);
pair_exists = true ;
}
}
if (pair_exists == false )
Console.WriteLine( "No such pair exists" );
}
// Driver code
public static void Main(String []args)
{
int []arr = { 4, 8, 9, -4, 1, -1, -8, -9 };
int n = arr.Length;
printPairs(arr, n);
}
}
// This code is contributed by PrinciRaj1992


Javascript

<script>
// JavaScript program to find pairs of positive
// and negative values present in an array
// Function to print pairs of positive
// and negative values present in the array
function printPairs(arr,n)
{
let pairs = new Set();
let pair_exists = false ;
// Store all the positive elements
// in the unordered_set
for (let i = 0; i < n; i++)
if (arr[i] > 0)
pairs.add(arr[i]);
// Start traversing the array
for (let i = 0; i < n; i++)
{
// Check if the positive value of current
// element exists in the set or not
if (arr[i] < 0)
if (pairs.has(-arr[i]))
{
// Print that pair
document.write(arr[i] + ", " + -arr[i]+ "<br>" );
pair_exists = true ;
}
}
if (pair_exists == false )
document.write( "No such pair exists" );
}
// Driver code
let arr=[4, 8, 9, -4, 1, -1, -8, -9];
let n = arr.length;
printPairs(arr, n);
// This code is contributed by avanitrachhadiya2155
</script>


输出:

-4, 4-1, 1-8, 8-9, 9

时间复杂性: O(n)

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享