- 对列表进行排序(花费
O(NlogN) 时间)
- 开始遍历数组
- 查看当前元素是否可以与我们当前的集合进行通信。如果是,则将其添加到集合中并继续。否则,存储旧集合,创建一个新集合并将当前元素添加到其中。
- 对于每组,生成所有可以通信的传感器对。
类似:
def generate_pairs(array):
pairs = []
array_length = len(array)
for i in range(0, array_length):
for j in range(i+1, array_length):
pairs.append([array[i],array[j]])
return pairs
main_list = [1,2,4,7,9,10,13]
main_list.sort()
curr_set = [main_list[0]]
all_sets = []
for i in range (1,len(main_list)):
if main_list[i]-main_list[i-1] <=2:
curr_set.append(main_list[i])
else:
all_sets.append(curr_set)
curr_set = [main_list[i]]
all_pairs = []
for i in all_sets:
all_pairs += generate_pairs(i)
print(all_pairs)
# prints [[1, 2], [1, 4], [2, 4], [7, 9], [7, 10], [9, 10]]