說在前面
🎈不知道大家對于算法的學習是一個怎樣的心態呢?為了面試還是因為興趣?不管是出于什么原因,算法學習需要持續保持。
題目描述
給你一個下標從?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,現在是一名前端工程師,有空會刷刷算法題,平時喜歡打羽毛球 🏸 ,平時也喜歡寫些東西,既為自己記錄 📋,也希望可以對大家有那么一丟丟的幫助,寫的不好望多多諒解 🙇,寫錯的地方望指出,定會認真改進 😊,偶爾也會在自己的公眾號『
前端也能這么有趣
』發一些比較有趣的文章,有興趣的也可以關注下。在此謝謝大家的支持,我們下文再見 🙌。