标签: array-comparison

如何有效地编写代码来检查具有相同元素数量的两个数组是否具有相同的元素,即使位于不同的位置?

我试图解决这个问题:给定一个数字 N 和两个包含 N 个元素的 A、B 数组,确定 B 是否包含与 A 相同的元素(不一定位于相同位置)。

将有三个输入:

  • 第一行包含 N 个元素

  • 第二行包含数组 A 的 N 个元素

  • 第三行包含数组 B 的 N 个元素

例子:

输入:

4
4 2 3 7
2 3 4 9
Run Code Online (Sandbox Code Playgroud)

输出:no

输入:

5
5 1 1 9 3
1 9 1 5 3
Run Code Online (Sandbox Code Playgroud)

输出:yes

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d", &n);
    long int a[n], b[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%ld", &a[i]); …
Run Code Online (Sandbox Code Playgroud)

c arrays permutation array-comparison

4
推荐指数
1
解决办法
178
查看次数

比较 PostgreSQL 中的数组

我在 postgres 中有一个表,其中一value列包含字符串数组。我的目标是找到包含以下任何字符串的所有数组: {'cat', 'dog'}

id  value
 1  {'dog', 'cat', 'fish'}
 2  {'elephant', 'mouse'}
 3  {'lizard', 'dog', 'parrot'}
 4  {'bear', 'bird', 'cat'}
Run Code Online (Sandbox Code Playgroud)

以下查询用于ANY()检查 'dog' 是否等于每个数组中的任何项目,并将正确返回第 1 行和第 3 行:

select * from mytable where 'dog'=ANY(value);
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来搜索value字符串数组中的任何匹配项。例如 :

select * from mytable where ANY({'dog', 'cat'})=ANY(value);
Run Code Online (Sandbox Code Playgroud)

应该返回第 1、3 和 4 行。但是,上面的代码会引发错误。有没有办法在这个等式的左边使用 ANY() 子句?如果没有,检查数组中是否有任何字符串的解决方法是value什么?

sql arrays postgresql operators array-comparison

1
推荐指数
1
解决办法
209
查看次数

标签 统计

array-comparison ×2

arrays ×2

c ×1

operators ×1

permutation ×1

postgresql ×1

sql ×1