说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
给你一个下标从 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
中的所有元素都互不相同。
解题思路
这是一道比较简单的题目,直接根据题目遍历进行模拟即可,完整代码如下:
AC代码
/*** @param {number[]} nums* @return {number[]}*/
var resultArray = function(nums) {let a = [nums[0]], b = [nums[1]]for(let i = 2; i < nums.length; i++){if(a.at(-1) > b.at(-1)) a.push(nums[i])else b.push(nums[i])}return a.concat(b)
};
公众号
关注公众号『前端也能这么有趣
』,获取更多有趣内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。