GESP202412 三级 数字替换
题目分析¶
给定长度为 $n$ 的序列 $A$ 和一个整数 $k$, 需要将序列中所有大于 $k$ 的元素替换成序列的最大值, 所有小于 $k$ 的元素替换成序列的最小值, 等于 $k$ 的元素保持不变。
解题思路¶
- 先遍历序列,找到序列的最大值
mx
和最小值mn
; - 再遍历一次序列,根据每个元素与 $k$ 的大小关系替换:
- 如果
a[i] > k
,替换成mx
; - 如果
a[i] < k
,替换成mn
; - 否则保持不变。
实现步骤¶
- 初始化变量
mx
和mn
;mx
设小一些,可以令mx = -1e9
设为 $-10^9$。- 同理设
mn = 1e9
设为 $10^9$。设大一些。
- 第一次遍历:分别求出
mx
和mn
; - 第二次遍历:根据元素
a[i]
的值与 $k$ 比较,进行替换; - 输出最终数组。
复杂度分析¶
- 时间复杂度:$O(n)$,两次遍历数组;
- 空间复杂度:$O(n)$,存储输入及输出序列。
总结¶
- 本题主要考察数组遍历和条件判断;
- 先确定最大值和最小值是关键;
- 注意等于 $k$ 的元素不变;
- 代码实现简单高效。