2024华为OD机试真题目录-(B卷C卷D卷)-【C++ Java Python】
题目描述
给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。
当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。
输入描述
给定一个非空数组,其元素数据类型为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
输入
19,-31,10,57,61,27,11,28,-94
输出
10,-31,61,11,-94,57,27,28,19
考点
自定义排序
解题思路
1.构造排序规则函数,将每个数的绝对值与10取模,按照模从小到大的顺序排序。即可
得到排好序的数组,输出即可。
代码
c++
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b) {
a=abs(a)%10;
b=abs(b)%10;
return a<b;
}
int main() {
int tmp;
vector<int> vec;
while(cin>>tmp) {
vec.push_back(tmp);
if(cin.get()=='\n') break;
}
sort(vec.begin(), vec.end(),cmp);
for(int i=0;i<vec.size();i++) {
cout<<vec[i];
if(i!=vec.size()-1) {
cout<<",";
}
}
cout<<endl;
system("pause");
return 0;
}
java
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringJoiner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.i