二维数组单行元素处理:最大值后不满足递减时修正较小元素
二维数组行处理方案
核心逻辑
要满足要求的规则,只需按以下步骤逐行处理即可:
- 对每行先找到第一个最大值的索引位置,最大值本身不需要修改
- 对最大值之后的元素,从右往左反向遍历:每一步只需要保证左侧元素大于等于右侧相邻元素,遇到更小的左侧元素直接用右侧值覆盖即可,遍历完成后自然就满足递减要求。
你给出的示例验证逻辑如下:
原行:[1,1,5,2,4]
最大值5的索引是2,后续元素是[2,4]
从右往左遍历:
- 最右侧元素4无需修改
- 比较左侧的2和右侧的4,2<4,将2替换为4,后续元素变为
[4,4] - 最终行结果为
[1,1,5,4,4],和要求的输出完全一致。
代码实现(Python示例)
def process_2d_array(arr): # 遍历每一行 for row in arr: if not row: # 跳过空行 continue # 找第一个最大值的索引 max_val = max(row) max_idx = row.index(max_val) # 从后往前遍历最大值之后的元素 for i in range(len(row)-1, max_idx, -1): if row[i-1] < row[i]: row[i-1] = row[i] return arr # 测试用例 test_arr = [ [1,1,5,2,4] ] processed = process_2d_array(test_arr) print(processed) # 输出 [[1, 1, 5, 4, 4]]
其他语言适配说明
如果用Java、C++等其他编程语言实现,逻辑完全一致:
- 逐行处理,查找第一个最大值的位置
- 反向遍历最大值右侧的元素,若左侧元素小于右侧则用右侧值覆盖左侧
内容的提问来源于stack exchange,提问作者user15874922
相关产品推荐
相关产品推荐

