华为OD机试真题 新系统 - 分辨率排序 (JavaPyCC++JsGo)

4 阅读3分钟

分辨率排序

2026 华为OD机试真题 4月19日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

4K、2K、1080P、720P清晰度定义(清晰度:宽x高)如下:

  • 4K:3840 x 2160
  • 2K: 2560 x 1440
  • 1080P:1920 x 1080
  • 720P: 1280 x 720

清晰度大小定义:720P<1080P<2K<4K

分辨率(宽x高)匹配清晰度的规则:给定任意分辨率(宽x高),宽和高同时都大于等于清晰度的宽、高定义时,才认为满足该清晰度定义,并且优先匹配高级别清晰度。

例如:2600x1400:

  • 2600<3840,1400<2160,不满足4K清晰度定义
  • 2600>2560,1400<1440,不满足2K清晰度定义
  • 2600>1920,1400>1080,满足1080P清晰度定义

因此2600x1400是1080P清晰度。

特别的:

  1. 所有低于720P的清晰度,都认为是720P。
  2. 最大清晰度为4K,即只要满足4K清晰度标准的宽、高,无论多大,都归为4K。
  3. 简化逻辑:不考虑交换宽高的情况,例如2500.3200,匹配为1080P,不能匹配为2K。

分辨率大小规则:

  1. 优先比较该分辨率对应的清晰度大小
  2. 如果清晰度一致,则比较“面积(宽=宽x高)”
  3. 如果清晰度和面积一致,则比较“宽”

输入描述

n组"宽x高"字符串,空格间隔,n<10

输出描述

从大到小排序的n组"宽x高"字符串,空格间隔

示例1

输入

3840x2160 3840x2161 3840x1080 2560x1440 1920x1080 1x1

输出

840x2161 3840x2160 2560x1440 3840x1080 1920x1080 1x1

说明

示例2

输入

2560x1440 4000x5000 5000x4000

输出

5000x4000 4000x5000 2560x1440

说明

解题思路

核心思想

  1. 解析输入:读取以空格分隔的分辨率字符串(如 "3840x2160"),解析出宽(WW)和高(HH)。
  2. 清晰度判断:根据给定的阈值(4K、2K、1080P、720P)判断每个分辨率所属的最高清晰度等级。
    • 4K: W3840W \ge 3840H2160H \ge 2160
    • 2K: W2560W \ge 2560H1440H \ge 1440
    • 1080P: W1920W \ge 1920H1080H \ge 1080
    • 720P: W1280W \ge 1280H720H \ge 720
    • 低于 720P 的统一归为 720P。
  3. 排序逻辑:使用自定义排序规则对分辨率进行降序排列:
    • 第一优先级:清晰度等级(4K > 2K > 1080P > 720P)。
    • 第二优先级:面积(W×HW \times H)。
    • 第三优先级:宽度(WW)。
  4. 输出结果:将排序后的分辨率字符串按空格连接并输出。

复杂度分析

  • 时间复杂度O(nlogn)O(n \log n),其中 nn 为分辨率的数量(n<10n < 10)。由于 nn 非常小,排序开销极低。
  • 空间复杂度O(n)O(n),用于存储分辨率对象和排序结果。