最全华为OD机试之AI面板识别(3),2024年最新Golang基础面试题及答案

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 编号全局唯一
  • 1 ≤ 编号 ≤ 100
  • 0 ≤ x1 < x2 ≤ 1000
  • 0  ≤  y1 < y2 ≤ 1000

输出描述

排序后的编号列表,编号之间以空格分隔

用例
输入5 1 0 0 2 2 2 6 1 8 3 3 3 2 5 4 5 5 4 7 6 4 0 4 2 6
输出1 2 3 4 5
说明

解析

  1. 这个题用例中说明图例2和3编号写反了,注意理解题目的意思
  2. 给出的坐标是左上角和右下角,且排序是找所有未排序的点的最高点作为基准点,然后找到基准点那一行进行排序,例如说明中的图(编号1和3位是1行 2是1行 4和5 是一行 )
  3. 请注意排序规则
    每次在尚未排序的灯中挑选最高的灯作为的基准灯,
    找出和基准灯属于同一行所有的灯进行排序。两个灯高低偏差不超过灯半径算同一行(即两个灯坐标的差 ≤ 灯高度的一半)

在这里插入图片描述
若按照排序规则来说的画,1,2,3 属于同一行 且排序时,先行后列,则 最终排序结果为1,2,3 而并非1,3,2

  1. 这个题可以使用List来进行灯坐标存储,然后先找出未排序的最大的,然后是找出和最大的灯处于同一行的,按x1坐标进行排序。谁小谁排在前。每次找完一行,就把找到的数据移出。
  2. 例如输入
    5
    1 0 0 2 2
    2 3 0 5 3
    3 6 0 8 2
    4 0 6 2 7
    5 4 6 6 7
    图形展示如下:
    在这里插入图片描述
    那么输出id顺序应该为 1 2 3 4 5 其中 1 2 3 为一行
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class T70 {
	static class Light {
		int id, x1, y1, x2, y2;

		public Light(int id, int x1, int y1, int x2, int y2) {
			super();
			this.id = id;
			this.x1 = x1;
			this.y1 = y1;
			this.x2 = x2;
			this.y2 = y2;
		}
	}

	static List<Light> lightList = new ArrayList<>();

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = Integer.parseInt(sc.nextLine());
		for (int i = 0; i < num; i++) {
			String line = sc.nextLine();
			String numStrArr[] = line.split(" ");
			int id = Integer.parseInt(numStrArr[0]);
			int x1 = Integer.parseInt(numStrArr[1]);
			int y1 = Integer.parseInt(numStrArr[2]);
			int x2 = Integer.parseInt(numStrArr[3]);
			int y2 = Integer.parseInt(numStrArr[4]);
			Light light = new Light(id, x1, y1, x2, y2);
			lightList.add(light);
		}
		while (lightList.size() > 0) {
			Light maxLight = getMaxLight();
			System.out.print(maxLight.id + " ");
			List<Light> sameLineLights = getSameLineLights(maxLight);
			sameLineLights.sort(new Comparator<Light>() {
				@Override
				public int compare(Light l1, Light l2) {
					if (l1.x1 < l2.x1)
						return -1;
					if (l1.x1 > l2.x1)
						return 1;
					return 0;
				}
			});
			for (Light l : sameLineLights) {
				System.out.print(l.id + " ");
			}
		}
	}

	// 找出未排序的最大的那个
	public static Light getMaxLight() {
		Light light = null;
		for (Light lt : lightList) {
			if (light == null) {
				light = lt;
			}
			if (lt.y1 < light.y1) {
				light = lt;


![img](https://img-blog.csdnimg.cn/img_convert/9a3cf5801c0eff1833936b9631dbcccc.png)
![img](https://img-blog.csdnimg.cn/img_convert/8ef4a4dfcee2abe712a36bce8072ddf2.png)
![img](https://img-blog.csdnimg.cn/img_convert/ea4ad52f38b3ec83925eb1b3ca9e8d6b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**

体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值