列表

详情


100243. 将元素分配到两个数组中 I

给你一个下标从 1 开始、包含 不同 整数的数组 nums ,数组长度为 n

你需要通过 n 次操作,将 nums 中的所有元素分配到两个数组 arr1arr2 中。在第一次操作中,将 nums[1] 追加到 arr1 。在第二次操作中,将 nums[2] 追加到 arr2 。之后,在第 i 次操作中:

通过连接数组 arr1arr2 形成数组 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] 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> resultArray(vector<int>& 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);
    }
}

上一题