LeetCode 题解工作台
将元素分配到两个数组中 I
给你一个下标从 1 开始、包含 不同 整数的数组 nums ,数组长度为 n 。 你需要通过 n 次操作,将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中,将 nums[1] 追加到 arr1 。在第二次操作中,将 nums[2] 追加到 arr2 。之后,在第 …
2
题型
7
代码语言
3
相关题
当前训练重点
简单 · 数组·模拟
答案摘要
我们创建两个数组 和 ,分别存放数组 中的元素,初始时 中只有 , 中只有 。 然后遍历 下标从 开始的元素,如果 的最后一个元素大于 的最后一个元素,就将当前元素追加到 ,否则追加到 。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 数组·模拟 题型思路
题目描述
给你一个下标从 1 开始、包含 不同 整数的数组 nums ,数组长度为 n 。
你需要通过 n 次操作,将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中,将 nums[1] 追加到 arr1 。在第二次操作中,将 nums[2] 追加到 arr2 。之后,在第 i 次操作中:
- 如果
arr1的最后一个元素 大于arr2的最后一个元素,就将nums[i]追加到arr1。否则,将nums[i]追加到arr2。
通过连接数组 arr1 和 arr2 形成数组 result 。例如,如果 arr1 == [1,2,3] 且 arr2 == [4,5,6] ,那么 result = [1,2,3,4,5,6] 。
返回数组 result 。
示例 1:
输入:nums = [2,1,3] 输出:[2,3,1] 解释:在前两次操作后,arr1 = [2] ,arr2 = [1] 。 在第 3 次操作中,由于 arr1 的最后一个元素大于 arr2 的最后一个元素(2 > 1),将 nums[3] 追加到 arr1 。 3 次操作后,arr1 = [2,3] ,arr2 = [1] 。 因此,连接形成的数组 result 是 [2,3,1] 。
示例 2:
输入:nums = [5,4,3,8] 输出:[5,3,4,8] 解释:在前两次操作后,arr1 = [5] ,arr2 = [4] 。 在第 3 次操作中,由于 arr1 的最后一个元素大于 arr2 的最后一个元素(5 > 4),将 nums[3] 追加到 arr1 ,因此 arr1 变为 [5,3] 。 在第 4 次操作中,由于 arr2 的最后一个元素大于 arr1 的最后一个元素(4 > 3),将 nums[4] 追加到 arr2 ,因此 arr2 变为 [4,8] 。 4 次操作后,arr1 = [5,3] ,arr2 = [4,8] 。 因此,连接形成的数组 result 是 [5,3,4,8] 。
提示:
3 <= n <= 501 <= nums[i] <= 100nums中的所有元素都互不相同。
解题思路
方法一:模拟
我们创建两个数组 和 ,分别存放数组 中的元素,初始时 中只有 , 中只有 。
然后遍历 下标从 开始的元素,如果 的最后一个元素大于 的最后一个元素,就将当前元素追加到 ,否则追加到 。
最后将 中的元素追加到 中,返回 。
时间复杂度 ,空间复杂度 。其中 为数组 的长度。
class Solution:
def resultArray(self, nums: List[int]) -> List[int]:
arr1 = [nums[0]]
arr2 = [nums[1]]
for x in nums[2:]:
if arr1[-1] > arr2[-1]:
arr1.append(x)
else:
arr2.append(x)
return arr1 + arr2
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | complexity is O(n) because each element is processed once, and space complexity is O(n) to store the two subarrays before concatenation. |
| 空间 | Depends on the final approach |
面试官常问的追问
外企场景- question_mark
Ask why comparing only the last elements of arr1 and arr2 is sufficient.
- question_mark
Check if the candidate correctly simulates sequential placement rather than sorting.
- question_mark
Probe for understanding of array concatenation versus in-place merging.
常见陷阱
外企场景- error
Forgetting that arrays are 1-indexed and misplacing initial elements.
- error
Incorrectly comparing the current element with both subarrays instead of only the last elements.
- error
Concatenating arr2 before arr1, which reverses the required order.
进阶变体
外企场景- arrow_right_alt
Distribute elements using maximum element comparison instead of last-element simulation.
- arrow_right_alt
Extend the problem to allow repeated elements and handle equal comparisons.
- arrow_right_alt
Simulate distribution for k subarrays instead of only two, keeping track of last elements.