【华为OD机试】数字最低位排序 (C++ Python Java)2023 B卷

题目描述

给定一个非空数组(列表)

起元素数据类型为整型

请按照数组元素十进制最低位从小到大进行排序

十进制最低位相同的元素,相对位置保持不变

当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

输入描述

给定一个非空数组(列表)

其元素数据类型为32位有符号整数

数组长度为[1,1000]

输出描述

排序后的数组


 

示例1:

输入

1,2,5,-21,22,11,55,-101,42,8,7,32

输出

1,-21,11,-101,2,22,42,32,5,55,7,8

示例2:

输入

1,7,5,-10,2,15,4,-6,11,16

输出

-10,1,11,2,4,5,15,-6,16,7

考点

自定义排序

代码

from functools import cmp_to_key

def cmp(a,b):
    a=abs(a)%10
    b=abs(b)%10
    return a-b
vec=list(map(int, input().split(',')))
n=len(vec)
vec.sort(key=cmp_to_key(cmp))
j=0
for i in vec:
    print(i,end="")
    if j!=n-1:
        print(',',end="")
    j+=1

 

你可能感兴趣的:(华为od机试2023B卷,算法,数据结构,华为od,c++,python)