当前位置: 首页 > 面试经验 >

2024华为OD机试 - 整型数组按个位值排 JAVA代码

优质
小牛编辑
78浏览
2024-08-14

2024华为OD机试 - 整型数组按个位值排 JAVA代码

2024华为OD机试真题,代码包含语言java 代码基本都有详细注释。

题目描述

  • 给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。
  • 当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。

输入描述

  • 给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1, 1000]

输出描述

  • 输出排序后的数组

用例

输入

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

输出

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

说明

声明

上述内容部分整理自考生的真实反馈以及网络资源的搜集,我们始终尊重原作者的权益。如若发现任何内容侵犯了您的版权,敬请及时与我们取得联系,我们将立即进行删除处理。

此外,本材料后续的解析与代码部分均为我方原创思考与分析,凝聚了我们的心血与智慧。我们恳请各位尊重原创,切勿随意搬运或抄袭,共同维护良好的学术与创作环境。谢谢!

订阅后可看完整内容,试看真题如下:

华为OD机试真题 - 剩余银饰的重量 (D卷,100分)

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

题目解析

我们需要明确题目的要求:给定一个非空数组,数组中的元素都是32位有符号整数,我们需要按照这些整数十进制最低位的数值从小到大进行排序。如果两个整数的十进制最低位相同,那么它们在排序后的数组中的相对位置应该保持不变。

  1. 理解“十进制最低位”的概念:对于正数,十进制最低位就是该数除以10的余数。对于负数,我们需要先去掉符号位(即不考虑负号),然后计算其十进制最低位。
  2. 遍历数组并确定排序依据:我们可以遍历数组中的每一个元素,并计算其十进制最低位。为了在排序时保持相同最低位数的元素相对位置不变,我们可以考虑使用元组作为排序的“键”。元组的第一个元素是十进制最低位,第二个元素是原始数组中的索引(用于保持相对位置)。
  3. 对数组进行排序:使用Python内置的sorted函数(或列表的sort方法),并传入我们之前确定的排序依据(即元组)。这样,数组就会按照我们想要的顺序进行排序。
  4. 输出结果:排序完成后,我们只需要输出排序后的数组即可。

Java算法源码

import java.util.Arrays;
import java.util.Scanner;

public class Main { 
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String[] arr = sc.nextLine().split(",");
    System.out.println(getResult(arr));
  }
 
  public static String getResult(String[] arr) {
    return Arrays.stream(arr)
                 .sorted((a, b) -> a.charAt(a.length() - 1) - b.charAt(b.length() - 1))
                 .reduce((a, b) -> a + "," + b).orElse("");
  }
}

作者:华为OD机试题库链接:https://www.nowcoder.com/discuss/635442755900030976?sourceSSR=usersJava算法源码

import java.util.Arrays;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String[] arr = sc.nextLine().split(",");

System.out.println(getResult(arr));

}

public static String getResult(String[] arr) {

return Arrays.stream(arr)

.sorted((a, b) -> a.charAt(a.length() - 1) - b.charAt(b.length() - 1))

.reduce((a, b) -> a + "," + b).orElse("");

}

}

#华为od##华为od题库##华为OD机试真题##华为OD题库##华为#
 类似资料: