leetcode 3069. 将元素分配到两个数组中 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中的所有元素都互不相同。

分析:模拟,用两个指针分别指向 arr1 和 arr2 的最后一个元素,按照题目要求分别分配 nums 数组中的元素,最后拼接成一个数组即可。

cpp 复制代码
class Solution {
public:
    vector<int> resultArray(vector<int>& nums) {
        vector<int>vec1,vec2;
        vec1.push_back(nums[0]),vec2.push_back(nums[1]);
        int n=nums.size(),l=0,r=0;
        for(int i=2;i<n;++i)
        {
            if(vec1[l]>vec2[r])vec1.push_back(nums[i]),l++;
            else vec2.push_back(nums[i]),r++;
        }
        for(int i=0;i<=r;++i)
            vec1.push_back(vec2[i]);
        return vec1;
    }
};
相关推荐
文丑颜不良啊7 小时前
LeetCode2481~2500题目解析
java·leetcode
文丑颜不良啊14 小时前
LeetCode2461~2480题目解析
java·leetcode
文丑颜不良啊15 小时前
LeetCode2441~2460题目解析
java·leetcode
文丑颜不良啊16 小时前
LeetCode2521~2540题目解析
java·leetcode
文丑颜不良啊19 小时前
LeetCode2501~2520题目解析
java·leetcode
Pniubi1 天前
力扣54.螺旋矩阵
算法·leetcode·矩阵
Rain的Java大神之路2 天前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
Pniubi2 天前
力扣73 矩阵置零
算法·leetcode·矩阵
文丑颜不良啊2 天前
LeetCode2261~2280题目解析
java·leetcode
文丑颜不良啊3 天前
LeetCode2241~2260题目解析
java·leetcode