1.

  • 输入: 第一行输入数组个数,第二行输入数组,第三行输入N
  • 输出:数组中最大的N个数和最小的N个数的和,这最值的几个数中,有重复的输出-1

通过率75%,哪有问题,目前还不知道,可以参考下

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNextLine()){int count = scanner.nextInt();int[] arr = new int[count];for(int i=0;i<count;i++){arr[i] = scanner.nextInt();}int num = scanner.nextInt();if(num<=0){System.out.println("-1");}else{Arrays.sort(arr);List<Integer> result = new ArrayList<>();//minfor (int i = 0; i < num; i++) {result.add(arr[i]);}//maxfor (int i = arr.length-1; i >= arr.length-num; i--) {result.add(arr[i]);}List<Integer> collect = result.stream().distinct().collect(Collectors.toList());if(collect.size()<num*2){System.out.println("-1");}else{int a =0;for (Integer integer : collect) {a+=integer;}System.out.println(a);}}}}
}

2.

  • 输入:一组用英文半角逗号隔开的数字字符串
  • 输出:由3个数字组合成最小的数字(不足3个元素则输出所有的)

当时是穷举了,通过率65%,现在是用递归做,进行优化过的

 public static void main(String[] args) throws IOException {Scanner scan = new Scanner(System.in);String[] split = scan.next().split(",");List<String> list = Arrays.stream(split).collect(Collectors.toList());List<String> result = new ArrayList<>();DFS(result, list, "");result.sort(String::compareTo);System.out.println(result.get(0));}public static void DFS(List<String> result, List<String> candidate, String prefix) {if (prefix.length() != 0 && candidate.size() == 0) {result.add(prefix);}for (int i = 0; i < candidate.size(); i++) {List<String> temp = new LinkedList<>(candidate);int item =  Integer.valueOf(temp.remove(i));  // 取出被删除的元素,这个元素当作一个组合用掉了DFS(result, temp, prefix + item);}}

3.

和第二题有点像

  • 输入:一组数 如: 10 9 21
  • 输出:3个元素组成的最大的数字(输出字符串)

当时通过率50%多,现在是同样递归优化过的

public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String input = reader.readLine();String[] split = input.split(" ");List<String> list = Arrays.asList(split);List<String> result = new ArrayList<>();DFS(result, list, "");result.sort(String::compareTo);System.out.println(result.get(result.size()-1));}public static void DFS(List<String> result, List<String> candidate, String prefix) {if (prefix.length() != 0 && candidate.size() == 0) {result.add(prefix);}for (int i = 0; i < candidate.size(); i++) {List<String> temp = new LinkedList<>(candidate);int item =  Integer.valueOf(temp.remove(i));  // 取出被删除的元素,这个元素当作一个组合用掉了DFS(result, temp, prefix + item);}}

上面2 3 题 思路就是,递归求出所有的排列,排序后拿出最小值


补充

对于上面2 3题,新的解法

 public static String minDictOrderOfStringJoint(String[] arr){if(arr == null || arr.length == 0)return "";Arrays.sort(arr, (o1, o2) -> o1.concat(o2).compareTo(o2.concat(o1)));StringBuffer sb = new StringBuffer();for(int i = 0; i < arr.length;i ++){sb.append(arr[i]);}return sb.toString();}

利用Comparator接口进行排序,排序规则是,两两比较,较大或较小的排前面即可

或者可以使用位数的比较,取大值时,1位数的最大值放第一位,以此类推.最小值时最大位数的最小值做第一位

华为OD机试3个排序题相关推荐

  1. 华为OD机试2023年最新题库(JAVA、Python、C++)

    我是一名软件开发培训机构老师,我的学生已经有上百人通过了华为OD机试,学生们每次考完试,会把题目拿出来一起交流分享. 2023年5月份题库已经更新为OD统一考试(B卷),题库由三部分组成: 1.202 ...

  2. 华为OD机试(2023.5新题) 分苹果(java,py,c++,js)

    华为OD机试真题目录:真题目录 本文章提供java.python.c++.jsNode四种代码 题目描述 A.B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算, ...

  3. 华为OD机试 - 磁盘容量排序

    题目描述 磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T = 1024G,1G = 1024M,现在给定n块磁盘的容量, 请对它们按从小到大的顺序进行稳定排序,例如给定5块盘的容 ...

  4. 华为OD机试真题大全完整目录

    华为OD机试真题大全完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:华为OD机试真题大全 数量:406篇博文(2023年5月16日截止) 更新时间至:2023年5月16日(后续加上去的博文,会每 ...

  5. 2023华为OD机试备考攻略 以及题库目录分值说明 考点说明

    刷题库,刷题库 刷题库.重要的事情说三遍!!!!!!!!!!!!!!!!!!!!!! 要刷有多种语言的实现的题库,一种语言看不懂可以换另一种语言,而且可以结合起来去重!!! 类似下面这种的题库: 华为 ...

  6. 华为OD机试(21-40)老题库解析Java源码系列连载ing

    华为OD机试算法题新老题库练习及源码 老题库 21.字符串序列判定 22.最长的指定瑕疵度的元音子串 23.处理器问题 24.单向链表中间节点 25.字符串重新排列.字符串重新排序 26.完美走位 2 ...

  7. 华为OD机试真题2023(JavaScript)

    华为机试题库已由2022版换为2023版   华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100分,第三道为中等或困难题,分值为200分.总分为400分,150分钟考试时间.之前通过为1 ...

  8. 华为OD机试真题2022(JAVA)

    华为机试题库已换 →→→ 华为OD机试2023B卷(JAVA&JS) 以下题目为旧版题库,供大家课外消遣 基础题: 序号 题目 分值 1 查找众数及中位数 100 2 出错的或电路 100 3 ...

  9. 【华为OD机试】-2023(A+B卷)真题【C++,JAVA,Python】

    考点分类:华为OD机试真题(2023)-考点分类 近期考题:华为OD机试 真题2023 Q1 (A卷) c++/python/java专栏:华为OD机试(Python,Java,C++)2023(A+ ...

最新文章

  1. 关于python文件读写小结
  2. android webview gettitle,Android-webview加载网页去除标题
  3. Manjaro开机黑屏卡住_显卡驱动问题解决及配置源和搜狗输入法安装。
  4. java时间日期工具类_java日期处理工具类
  5. Source Insight 教程
  6. Tomcat(二):server.xml配置
  7. python与linux关系_如何处理Linux / Python依赖关系?
  8. 为什么事务日志自动增长会降低你的性能
  9. Gerrit 服务搭建和升级详解(包括 H2 数据库迁移 MySQL 步骤)
  10. LeetCode93 Restore IP Addresses
  11. 项目3:PHP抽奖程序 ,抽奖规则代码 分时间段
  12. Python抓取必应搜索背景图片
  13. 打印九行菱形php,c语言打印菱形
  14. JAVA 将byte数组类型的图片转换成换成JPEG格式
  15. Maven报:Unable to import maven project: See logs for details
  16. 静态网页,动态网页,伪静态网页区别以及优缺点
  17. PS图层模式详细讲解
  18. 直播评论可以用html,网页制作HTML5实现直播间评论滚动效果的代码
  19. win7电脑设置自动关机
  20. 记录自己学习尚硅谷javaweb2022版中遇到的一些问题

热门文章

  1. AnHelper.js
  2. WPF 键盘全局接收消息
  3. sun java applet_Java Applet 基础
  4. Vue购物车实例练习
  5. 网络安全实验室——基础关
  6. php302错误,laravel 302错误,但用员工ID登录
  7. 【Android】LBS定位功能
  8. 考研北京理工计算机科学与技术,北京理工大学计算机科学与技术考研
  9. 驻云科技带着新产品和技术亮相广州云栖大会
  10. CAVE: A Visual Analytics System for Exploratory Columnar Data Augmentation Using Knowledge Graphs