我是靠谱客的博主 高高早晨,最近开发中收集的这篇文章主要介绍2022/7/26华为机试,Q2,上机迷迷糊糊的,搞完突然醒悟,自抱自泣!三道题附带答案21:52 2022/7/26华为机试三道题附带答案,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
21:52 2022/7/26华为机试三道题附带答案
备注:未ac,华为不难,难的是个人很难进入答题状态!
第一道
给定一个字符串,是工作记录的日志时间,时间为四段格式,AA:BB:CC:DDD
其中AA为0-24,BB为0-24,CC为0-24,DDD为0-999,可能由0填充,相同时间按照记录排序,否则按照时间升序!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class preDealString implements Comparable<preDealString> {
String line;
String lineNext;
public String getLine() {
return line;
}
public String getLineNext() {
return lineNext;
}
public preDealString(String string) {
// 构建
String[] stringArray = string.split(":");
int AA = Integer.parseInt(stringArray[0]);
int BB = Integer.parseInt(stringArray[1]);
int CC = Integer.parseInt(stringArray[2]);
int DD = Integer.parseInt(stringArray[3]);
this.line = string;
this.lineNext = "" + AA + BB + CC + DD;
}
public int compareTo(preDealString n) {
return lineNext.compareTo(n.lineNext);
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 时间格式排序 AA:BB:CC:DDD
/*
1:04:5:0
01:04:5:000
2:04:5:0
*/
/*
list.add(new preDealString("2:04:5:0"));
list.add(new preDealString("1:04:5:0"));
list.add(new preDealString("01:04:5:000"));
*/
int nums = Integer.parseInt(br.readLine());
List<preDealString> list = new ArrayList<preDealString>();
for (int i = 0; i < nums; i++) {
String temp = br.readLine();
list.add(new preDealString(temp));
}
//控制台显示
Collections.sort(list);
for (preDealString s : list) {
System.out.println(s.getLine());
}
}
}
第二道
给三个矩阵,且矩阵面积交集,未有交集返回0.
1 6 4 4
3 5 3 4
0 3 7 3
返回2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// 三个左上角最大列
右上角最小列:
//上顶 最小行
下底最大行.
// 1 6 4 4
// 3 5 3 4
// 0 3 7 3
// 构建完整的点
// 列号 行号 列+ 行+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] string1 = br.readLine().split(" ");
String[] string2 = br.readLine().split(" ");
String[] string3 = br.readLine().split(" ");
int[] arr1 = new int[4];
int[] arr2 = new int[4];
int[] arr3 = new int[4];
for (int i = 0; i < 4; i++) {
arr1[i] = Integer.parseInt(string1[i]);
arr2[i] = Integer.parseInt(string2[i]);
arr3[i] = Integer.parseInt(string3[i]);
}
int colMax = Math.max(Math.max(arr1[0], arr2[0]), arr3[0]);
int colMin = Math.min(Math.min(arr1[0] + arr1[2], arr2[0] + arr2[2]),
arr3[0] + arr3[2]);
int minRow = Math.min(Math.min(arr1[1], arr2[2]), arr3[3]);
int maxRow = Math.max(Math.max(arr1[1] + arr1[3], arr2[1] + arr2[3]),
arr3[1] + arr3[3]);
int area = (colMin - colMax) * (minRow - maxRow);
area = area > 0 ? area : 0;
System.out.println(area);
}
}
第三道
书籍堆叠,需要长宽大于上面的,不得旋转,求最大的堆叠数.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// [[20,10],[8,9][4,3]],堆叠书籍!
// 抽取数值,构建数组.
char[] lineChar = br.readLine().toCharArray();
// char[] lineChar = "[[20,10],[8,9],[4,3]]".toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lineChar.length; i++) {
if (lineChar[i] == '[' || lineChar[i] == ']') continue;
else sb.append(lineChar[i]);
}
String[] nextArray = sb.toString().split(",");
int length = nextArray.length / 2;
int[] index0 = new int[length];
int[] index1 = new int[length];
// 反转且分为两个数组.
int index0_0 = 0, index1_1 = 0;
for (int i = nextArray.length - 1, j = 0; i >= 0; i--, j++) { //5 4 3 2 1 0
if (i % 2 == 0) index0[index0_0++] = Integer.parseInt(nextArray[i]);
else index1[index1_1++] = Integer.parseInt(nextArray[i]);
}
int[] dp = new int[index0.length];
dp[0] = 1;
int max = 0;
for (int i = 1; i < index0.length; i++) {
for (int j = 0; j < i; j++) {
// 转移
if (index0[i] > index0[j] && index1[i] > index1[j] && dp[i] < dp[j] + 1) {
dp[i] = dp[j] + 1;
max = Math.max(max, dp[i]);
}
}
}
System.out.println(max);
}
}
最后
以上就是高高早晨为你收集整理的2022/7/26华为机试,Q2,上机迷迷糊糊的,搞完突然醒悟,自抱自泣!三道题附带答案21:52 2022/7/26华为机试三道题附带答案的全部内容,希望文章能够帮你解决2022/7/26华为机试,Q2,上机迷迷糊糊的,搞完突然醒悟,自抱自泣!三道题附带答案21:52 2022/7/26华为机试三道题附带答案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复