147. 24年9月-华为留学生-1.十六进制权重数组分析

难度 5
  • 标签:
  • 大厂笔试真题华为
题目描述
题解
题库

24年9月-华为留学生-1.十六进制权重数组分析

题目内容

设计一个程序来处理特定的数组分析问题。
给定一个非负整数数组 arr,其中每个整数用其十六进制表示中的数字之和来表示其“权重”(权重计算是基于十六进制表示中每位数字的和,0-9代表权重0-9,A:10、B:11、C:12、D:13、E:14、F:15)。
任务是找出数组中每个元素右侧第一个具有更大“权重”的元素,并返回一个新的数组,该数组包含这些元素的索引。
如果一个元素的右侧没有更大“权重”的元素,则对应位置返回 -1

输入描述

  • 第一行:一个整数 N,表示数组 arr 的大小,0 < N < 100000
  • 第二行:N 个由空格分隔的非负整数,表示数组 arr,0 ≤ arr[i] ≤ 0xfffffff

输出描述

一行:N 个整数,表示每个元素右侧第一个权重更大的元素的索引,如果不存在则为 -1

样例1

输入

3
12 3 24

输出

-1 2 -1

说明

  • 十六进制表示分别为:[C, 3, 18]
  • 对应的权重分别为:[12, 3, 1 + 8 = 9]
  • 对于第一个元素12(权重12),其右侧没有更大权重的元素,因此返回 -1
  • 对于第二个元素3(权重3),其右侧第一个更大权重的元素是24(权重9),位于索引2
  • 对于第三个元素24(权重9),其右侧没有更大权重的元素,因此返回 -1

样例2

输入

5
15 8 23 42 7

输出

-1 3 3 -1 -1

说明

  • 十六进制表示分别为:[F, 8, 17, 2A, 7]
  • 对应的权重分别为:[15, 8, 8, 2 + 10 = 12, 7]
  • 对于第一个元素15(权重15),其右侧没有更大权重的元素,因此返回 -1
  • 对于第二个元素8(权重8)和第三个元素23(权重8),右侧第一个更大权重的元素是42(权重12),位于索引3
  • 对于第四个元素42(权重12)和第五个元素7(权重7),其右侧没有更大权重的元素,因此对应位置返回 -1