324 擺動排序 II(JS實現)

2021-10-10 00:08:14 字數 880 閱讀 1416

給定乙個無序的陣列 nums,將它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的順序。

示例 1:

輸入: nums = [1, 5, 1, 1, 6, 4]

輸出: 乙個可能的答案是 [1, 4, 1, 5, 1, 6]

示例 2:

輸入: nums = [1, 3, 2, 2, 3, 1]

輸出: 乙個可能的答案是 [2, 3, 1, 3, 1, 2]

說明:你可以假設所有輸入都會得到有效的結果。

高階:你能用 o(n) 時間複雜度和 / 或原地 o(1) 額外空間來實現嗎?

很明顯,我做這道題就是先把陣列排序,然後將陣列分為兩部分,依次構造新陣列的,題解中有o(n)的演算法,其先用快速選擇法,找到陣列的中位數,然後將小於等於中位數的數放置在左側,大於中位數的放置在右側,這樣就成了兩部分了

/**

* @param nums

* @return do not return anything, modify nums in-place instead.

*/var

wigglesort

=function

(nums)

if(low >=

0) res.

push

(nums[low--])

;//從後向前進行插入

if(high >= mid) res.

push

(nums[high--])

;//從後向前進行插入

for(

let i=

0; i;

LeetCode 324 擺動排序 II

給定乙個無序的陣列nums,將它重新排列成nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1,2...

leetcode 324 擺動排序 II

思路 將給定陣列排序並逆序 拆分處理後的陣列,得到兩個陣列 將乙個陣列插入至另乙個陣列。4,6,5,5 1.排序 逆序 6,5,5,4 2.拆分 6,5 5,4 3.合併 5,4,6,5 4.result 5,6,4,5 def resolution nums length len nums if ...

leetcode 324 擺動排序 II

給定乙個無序的陣列 nums,將它重新排列成 nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1...