华为上机考试题目及详细答案.docxVIP

  • 4
  • 0
  • 约6.77千字
  • 约 8页
  • 2026-05-25 发布于河北
  • 举报

华为上机考试题目及详细答案

第一题(基础题,100分):循环非递减数组插入新元素

题目描述

海蒂爷爷将木板排列成循环非递减的圆桶状(即数组是一个非递减数组的旋转,仅在最大值到最小值处有一次下降,其余相邻元素均非递减),现在需要插入一块新木板,要求插入后仍保持循环非递减规律。若有多个可插入位置,选择下标最小的位置;若所有位置均可插入(如数组所有元素相等且新元素不同),默认插入到开头。

输入描述:

第一行输入一个整数n(1≤n≤400),表示原始木板列表的长度;

第二行输入n个整数(1≤元素≤1000),表示原始木板高度,保证满足循环非递减条件;

第三行输入一个整数x(1≤x≤1000),表示新木板的高度。

输出描述:输出插入新木板后的数组,元素用空格分隔。

样例输入1:

4

2342

1

样例输出1:23412

样例输入2:

4

1231

1

样例输出2:11231

详细答案

解题思路

核心是利用循环非递减数组的特性:仅存在一处“最大值→最小值”的断点,其余位置均满足非递减。遍历数组,判断每个位置是否适合插入,优先选择下标最小的符合条件的位置,无需显式找旋转点,直接线性扫描即可,效率足够(n≤400,O(n)复杂度完全达标)。

判断规则(设当前位置为i,前一个元素为prev=boards[(i-1)%n],当前元素为curr

文档评论(0)

1亿VIP精品文档

相关文档