假设我有以下数组。
数组 1:城市列表(可能有一些与数组 2 相同的条目) 数组 2:城市列表
我想输出以下列表:
- 仅在数组 1 中的城市列表
- 仅在数组 2 中的城市列表
- 两个数组中的城市列表
完成1-3的最有效方法是什么?
我正在考虑将城市的名称存储在每个数组中,然后进行 foreach 来比较两者。
假设我有以下数组。
数组 1:城市列表(可能有一些与数组 2 相同的条目) 数组 2:城市列表
我想输出以下列表:
完成1-3的最有效方法是什么?
我正在考虑将城市的名称存储在每个数组中,然后进行 foreach 来比较两者。
如果您的数组已排序,您可以并行遍历它们:
index_1 = 0 // assuming zero based indexing
index_2 = 0
repeat the follwoing loop:
if( index_0 is out of range )
count (remaining) cities from array 2
else if( index_1 is out of range )
count (remaining) cities from array 2
else {
a = get city from array 1 with the index_1
b = get city from array 2 with the index_2
if( a = b ) {
increment no. of cities in both arrays
increment both indices
}
else if( a < b )
count cities from array 1 until city from array 2 is b, update indices
else
count cities from array 2 until city from array 1 is a, update indices
}
end loop
这应该在数组大小的线性时间内完成工作。
如果数组未排序,则使用有效的排序算法对其进行排序。
如果数组很小,请不要打扰,请使用带有嵌套循环的蛮力方法。