数组双元素合并及格式规整的实现方案咨询
数组合并与格式调整实现方案
问题描述
给定示例数组:
original_array = [ [3, 5, 6], [4, -1, -1], [5, 7, -1], [1, 6, -1], [1, 0, 6], [3, 4, 8], [2, 3, 5], [2, -1, -1], [0, 4, 5], [0, 5, -1] ]
需完成以下操作:
- 合并数组中索引2和4的元素为一个新元素
- 移除合并后元素内的重复值
- 将合并后元素中的所有
-1移至末尾 - 为所有元素补充
-1,确保数组保持矩形结构 - 将合并后的元素移至数组首位,最终得到目标数组:
target_array = [ [5, 7, 1, 0, 6, -1], [3, 5, 6, -1, -1, -1], [4, -1, -1, -1, -1, -1], [1, 6, -1, -1, -1, -1], [3, 4, 8, -1, -1, -1], [2, 3, 5, -1, -1, -1], [2, -1, -1, -1, -1, -1], [0, 4, 5, -1, -1, -1], [0, 5, -1, -1, -1, -1] ]
实现方案(Python)
以下是对应需求的完整代码实现:
# 原始数组 original = [ [3, 5, 6], [4, -1, -1], [5, 7, -1], [1, 6, -1], [1, 0, 6], [3, 4, 8], [2, 3, 5], [2, -1, -1], [0, 4, 5], [0, 5, -1] ] # 1. 合并指定索引的元素(索引2和4) idx1, idx2 = 2, 4 merged = original[idx1] + original[idx2] # 2. 移除重复值,保留元素首次出现的顺序 seen = set() unique_vals = [] for num in merged: if num not in seen: seen.add(num) unique_vals.append(num) # 3. 将所有-1移至合并后元素的末尾 non_neg1 = [x for x in unique_vals if x != -1] neg1_count = unique_vals.count(-1) processed_merged = non_neg1 + [-1] * neg1_count # 4. 确定数组最终列数,为剩余元素补充-1以保持矩形结构 max_col = len(processed_merged) remaining_elements = [] for i in range(len(original)): if i != idx1 and i != idx2: current = original[i].copy() while len(current) < max_col: current.append(-1) remaining_elements.append(current) # 5. 将合并后的元素移至首位,组合成最终数组 final_array = [processed_merged] + remaining_elements # 打印验证结果 for row in final_array: print(row)
步骤说明
- 合并元素:直接拼接指定索引的两个子数组,得到初始合并结果。
- 去重处理:通过集合记录已出现的元素,遍历过程中只保留首次出现的元素,保证元素顺序不变。
- 调整-1位置:拆分合并元素为非-1部分和-1部分,再将-1部分追加到末尾。
- 保持矩形结构:以合并后处理好的元素长度为基准,给其他所有子数组补充
-1,直到长度一致。 - 调整数组顺序:将处理完成的合并元素放在数组最前端,后续跟上处理后的剩余元素。
内容的提问来源于stack exchange,提问作者Petar Andreev
相关产品推荐
相关产品推荐

