📌  相关文章
📜  计算数组中满足给定条件的有效对

📅  最后修改于: 2021-10-26 05:30:12             🧑  作者: Mango

给定一个整数数组arr[] ,任务是计算arr中有效元素对的数量。一对(arr[x], arr[y])被认为是无效的,如果

  • arr[x] < arr[y]
  • abs(arr[x] – arr[y]) 是奇数

注意:(ARR [X],ARR [Y])(ARR [Y],ARR [X])是两个不同的双当x = y改编[I]的所有可能值的值的i ≤ 120
例子:

方法:我们可以处理表示数组中元素arr[i]计数的(arr[i], count)对,而不是处理所有元素。由于只有120 个可能的值,我们对每个元素组进行频率计数,以降低整体复杂性。
对于每对(arr[x], countX)(arr[y], countY) ,如果满足条件,则总有效对将为countX * countY
如果arr[x] = arr[y] ,那么我们高估了一些对。在这种情况下,有效的对将是countA * (countA – 1),因为没有元素可以与自己配对。
下面是上述方法的实现:

C++
//C++ implementation of the approach
#include
using namespace std;
 
// Function to return total valid pairs
int ValidPairs(int arr[],int n)
{
  
    // Initialize count of all the elements
    int count[121]={0};
  
    // frequency count of all the elements
    for(int i=0;i


Java
//Java implementation of the approach
 
class GFG{
// Function to return total valid pairs
static int ValidPairs(int arr[],int n)
{
 
    // Initialize count of all the elements
    int[] count=new int[121];
 
    // frequency count of all the elements
    for(int i=0;i


Python3
# Python3 implementation of the approach
 
# Function to return total valid pairs
def ValidPairs(arr):
 
    # Initialize count of all the elements
    count = [0] * 121
 
    # frequency count of all the elements
    for ele in arr:
        count[ele] += 1
 
    ans = 0
    for eleX, countX in enumerate(count):
        for eleY, countY in enumerate(count):
            if eleX < eleY:
                continue
            if (abs(eleX - eleY) % 2 == 1):
                continue
 
            # Add total valid pairs
            ans += countX * countY
            if eleX == eleY:
 
                # Exclude pairs made with a single element
                # i.e. (x, x)
                ans -= countX
 
    return ans
 
# Driver Code
arr = [16, 17, 18]
 
# Function call to print required answer
print(ValidPairs(arr))


C#
//C# implementation of the approach
using System;
 
class GFG{
// Function to return total valid pairs
static int ValidPairs(int[] arr,int n)
{
 
    // Initialize count of all the elements
    int[] count=new int[121];
 
    // frequency count of all the elements
    for(int i=0;i


PHP


Javascript


输出:
1

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程