gpt4 book ai didi

java - 优化二维数组中的删除节点

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:24 24 4
gpt4 key购买 nike

我有尺寸为 720x90 的双维数组。让我们用 R 和 C 将行表示为列。R1 = {C1,...,C90}

....

R720 = {C1,...C90}

现在,我想查看任何行中的任何数据是否出现在任何其他行的任何其他位置。例如,假设第 470 行和第 67 列中的数据与第 672 行和第 34 列重复。在这种情况下,我想从数据集中删除第 470 行和第 672 行并继续检查。检查完所有行后,我只想打印幸存的行的索引。我已经为此编写了一个蛮力方法。但是,当我运行这段代码时,它永远不会返回,我无法诊断原因。另外,有没有更有效的方法来做到这一点?

//check all the subsets of the interleaved data
public static int checkSubsets(String[][] subsets){
List subset = new ArrayList();
for(int i = 0; i< 720; i++){
for(int j = 0; j < 90; j++)
subset.add(subsets[i][j]);
}
Object duplicate;
Iterator itr = subset.iterator();
while(itr.hasNext()){
duplicate = itr.next();
while(itr.hasNext()){
subset.remove(duplicate);
itr=subset.iterator(); //to avoid concurrent modification
itr.next();
}
}
return subset.size();
}

说明:假设我正在遍历矩阵中的每个值。我取 R1 C1 中的第一个值(第 1 行 - 第 1 列)。我发现这些值位于 12、346,123、356 行的某处。然后我从矩阵中删除所有这些行。所以现在矩阵小了 5 行。我现在停止检查第 1 行并移动到第 2 行。我继续检查,跳过第 12、346、123 和 356 行。因此,我在一个唯一的行之后(有 90 个值都是唯一的)。

最佳答案

我不确定你写的代码与需求有什么关系,我会告诉你答案的方法,但你必须先自己尝试。

很明显,您需要在每一行上进行迭代以检查可能的重复项,但这会导致性能失败,您可以通过简单地使用 HashMap 来克服这个问题,首先将每个条目存储在映射中,键将是数组节点的值,该值应该是该节点的坐标。

当为每一行遍历数组时,您应该从 map 中找到该行的所有节点之间共有的 y 坐标,因此检测到重复行。

为了避免继续检查已经删除的行尝试存储所有要删除的行并在完成后删除它们,您可以使用 Set 来存储它们以避免重复。

祝实现顺利。

关于java - 优化二维数组中的删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com