擺動排序 II

2021-10-04 00:11:30 字數 907 閱讀 8463

擺動排序 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]

說明:

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

高階:

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

核心思路:

快速選擇 + 3-way-partition + 虛位址

參考:

class solution elseelse if(nums[kk]temp)else if(nums[k]}

result[0] = i+1;//中間相同的數的左邊界

result[1] = j-1;//中間相同的數的右邊界

return result;

}private int getindex(int n,int i)

private void swap(int nums,int l,int r)

}

擺動排序 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...

LeetCode C 擺動排序 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...

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...