数组元素取整转换后排序的技术实现方案问询
数组取整转换与排序解决方案
转换规则明确
先把问题中的取整逻辑提炼为可执行规则:
- 数字为0时,保持0不变
- 非0数字:
- 个位数字≥5时,向上取整到最近的10的倍数,再除以10得到转换值
- 个位数字<5时,向下取整到最近的10的倍数,再除以10得到转换值
代码实现(Python)
1. 定义转换函数
def transform_num(num): if num == 0: return 0 remainder = num % 10 if remainder >= 5: rounded = ((num // 10) + 1) * 10 else: rounded = (num // 10) * 10 return rounded // 10
2. 处理数组并排序
# 测试原数组 original_array = [0, 16, 27, 73, 55] # 生成转换后的数组 transformed_array = [transform_num(num) for num in original_array] # 排序(保留所有重复项) sorted_result = sorted(transformed_array) print(sorted_result) # 输出: [0, 2, 3, 6, 7]
3. 重复元素测试
如果原数组包含会转换出重复值的元素,比如[0, 16, 15, 73, 55, 54],执行代码后:
- 转换后数组为
[0, 2, 2, 7, 6, 5] - 排序结果为
[0, 2, 2, 5, 6, 7],完全符合保留所有重复条目的要求
逻辑说明
- 转换函数通过取余运算判断个位数字,精准控制取整方向
- 列表推导式快速完成批量元素转换
- Python内置的
sorted()函数默认按升序排列,且不会剔除重复元素,刚好满足需求
内容的提问来源于stack exchange,提问作者niamad
相关产品推荐
相关产品推荐

