【华为机试真题Java】灰度图存储

  目录

题目描述

输入描述

输出描述

参考示例

参考代码

机试介绍

写在最后


题目描述

黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰色阶段值,256阶灰图是一个灰阶值取值范围为 0~255 的灰阶矩阵,0表示全黑,255表示全白,范围内的其他值表示不同的灰度。

但在计算机中实际存储时,会使用压缩算法,其中一个种压缩格式描述如如下:

扫描二维码关注公众号,回复: 17352951 查看本文章

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21

所有的数值以空格分隔;
前两个数分别表示矩阵的行数和列数;
从第三个数开始,每两个数一组,每组第一个数是灰阶值,第二个数表示该灰阶值从左到右,从上到下(可理解为二维数组按行存储在一维矩阵中)的连续像素个数。比如题目所述的例子, “255 34” 表示有连续 34 个像素的灰阶值是 255。
如此,图像软件在打开此格式灰度图的时候,就可以根据此算法从压缩数据恢复出原始灰度图矩阵。

请从输入的压缩数恢复灰度图原始矩阵,并返回指定像素的灰阶值。

输入描述

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21
3 4

输入包行两行:

  • 第一行是灰度图压缩数据
  • 第二行表示一个像素位置的行号和列号,如 0 0 表示左上角像素

输出描述

0

输出数据表示的灰阶矩阵的指定像素的灰阶值。

备注

  • 系保证输入的压缩数据是合法有效的,不会出现数据起界、数值不合法等无法恢复的场景
  • 系统保证输入的像素坐标是合法的,不会出现不在矩阵中的像素
  • 矩阵的行和列数范图为:(0,100]
  • 灰阶值取值范图:[0,255]

参考示例

示例1

输入

10 10 56 34 99 1 87 8 99 3 255 6 99 5 255 4 99 7 255 2 99 9 255 21
3 4

输出

99

示例2

输入

10 10 255 34 0 1 255 8 0 3 255 6 0 5 255 4 0 7 255 2 0 9 255 21
3 5

输出

255

参考代码

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
 
    int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    int[] pos = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
 
    int rows = nums[0];
    int cols = nums[1];
 
    int[] graph = new int[rows * cols];
 
    int start = 0;
 
    for (int i = 2; i < nums.length; i += 2) {
      // 灰阶值
      int gray = nums[i];
      // 该灰阶值从左到右,从上到下(可理解为二维数组按行存储在一维矩阵中)的连续像素个数
      int len = nums[i + 1];
      Arrays.fill(graph, start, start + len, gray);
      start += len;
    }
 
    // 将二维坐标转为一维坐标
    int target = pos[0] * cols + pos[1];
    System.out.println(graph[target]);
  }
}

机试介绍

三道中等难度题目,总分400分,前两道均为100分,后一道为200分,每道题的时间限制为1S(常规算法解答不出,可以用暴力方法)
机考分数是按照题目用例的通过数量的比例算分数 (若最后一道题做不出来,可将边界情况结果等写出来 )
机考时长2个半小时,若以冲刺机考最高分为目的,则做题时间分配前两道题40分钟,最后一题70分钟(平时练习可以按照40分钟的时限)
机考分数线根据招聘目标院校和非目标院校有不同(不同 华为招聘部门会有差异)

写在最后


创作不易!

如果觉得内容对你有帮助,麻烦给个三连关注支持一下我!

如果有错误,请在评论区指出,我会及时更改!


感谢各位的阅读,文章掺杂个人理解,如有错误请联系我指出~

猜你喜欢

转载自blog.csdn.net/forest_long/article/details/135307279
今日推荐