【发布时间】:2021-12-07 18:18:49
【问题描述】:
请查看代码中的 cmets,看看是否可以帮助我 我正在检查 $arr1 中的值是否在 $arr2 中。如果是,请将其添加到列表中, 如果不是,请将其添加到另一个列表中。确保两个列表/数组都没有 重复。
$arr1 = @(1,2,3,4,4,2,5,7,9,9,1)
$arr2= @(5,1,2,3,6,8,1)
$NotinList = @()
$inList = @()
$counter = 0
for ($i = 0; $i -lt $arr1.length; $i++){
for( $j = 0; $j -lt $arr2.length; $j++ ){
if($arr1[$i] -ne $arr2[$j]){ #check to see if value from $arr1 is in $arr2
for($k = 0; $k -lt $NotinList.length; $k++){ #Traverse through empty array
write-host $arr1[$i]
if($NotinList[$k] -ne $arr1[$i]){ # *^ if empty array does not alreadycontain item from big $arr1, add it.
$NotinList += $arr1[$i]
}
}
}
else{
$inList += $arr1[$i]
#how would I remove duplicates from number in list since there are repeating numbers in $arr1 that are not in $arr2.
}
}
$counter++ #keep track may use for something else??
}
【问题讨论】:
-
对于与previous one 几乎完全相同的问题,您已经得到了两个答案,并且两个答案都满足了您的需求。
-
甚至没有关闭。我不想执行那些操作“.Add”操作我需要一切都在一定的时空复杂度内。我想以最有效的方式删除重复项。
-
我已经有了完成工作的解决方案,但我想按照上面的方式进行。
-
你不想做那些“添加”操作是什么意思?你在这里用 += 做的事情是在性能方面可以做的最糟糕的事情之一。更不用说“时空复杂度”了
-
我不明白如何添加到 system.array 中,它实际上是在每次迭代时重新创建数组(您的代码片段)可以更有效地向通用列表添加值。
标签: arrays algorithm powershell multidimensional-array data-structures