class Solution {
public:
vector<int> resultArray(vector<int>& nums) {
}
};
100243. 将元素分配到两个数组中 I
给你一个下标从 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 <= 50
1 <= nums[i] <= 100
nums
中的所有元素都互不相同。原站题解
java 解法, 执行用时: 1 ms, 内存消耗: 43.8 MB, 提交时间: 2024-03-04 09:49:53
class Solution { public int[] resultArray(int[] nums) { int n = nums.length; List<Integer> a = new ArrayList<>(); List<Integer> b = new ArrayList<>(); a.add(nums[0]); b.add(nums[1]); for (int i = 2; i < n; i++) { if (a.get(a.size() - 1) > b.get(b.size() - 1)) { a.add(nums[i]); } else { b.add(nums[i]); } } a.addAll(b); for (int i = 0; i < n; i++) { nums[i] = a.get(i); } return nums; } }
golang 解法, 执行用时: 4 ms, 内存消耗: 2.8 MB, 提交时间: 2024-03-04 09:49:38
func resultArray(nums []int) []int { a := nums[:1] b := []int{nums[1]} for _, x := range nums[2:] { if a[len(a)-1] > b[len(b)-1] { a = append(a, x) } else { b = append(b, x) } } return append(a, b...) }
python3 解法, 执行用时: 36 ms, 内存消耗: 16.4 MB, 提交时间: 2024-03-04 09:47:46
class Solution: def resultArray(self, nums: List[int]) -> List[int]: arr1, arr2 = [nums[0]], [nums[1]] last1, last2 = nums[0], nums[1] for num in nums[2:]: if last1 > last2: arr1.append(num) last1 = num else: arr2.append(num) last2 = num arr1.extend(arr2) return arr1
php 解法, 执行用时: 8 ms, 内存消耗: 20.1 MB, 提交时间: 2024-03-04 09:44:07
class Solution { /** * @param Integer[] $nums * @return Integer[] */ function resultArray($nums) { // 交叉排序 $arr1 = [$nums[0]]; $arr2 = [$nums[1]]; $last1 = $arr1[0]; $last2 = $arr2[0]; for($i = 2; $i < count($nums); $i++) { if ( $last1 > $last2 ) { $arr1[] = $nums[$i]; $last1 = $nums[$i]; } else { $arr2[] = $nums[$i]; $last2 = $nums[$i]; } } return array_merge($arr1, $arr2); } }