給你乙個陣列nums,將它重排列如下形式
nums[0] < nums[1] > nums[2] < nums[3]….
注意事項:
你可以認為每個輸入都有合法解
樣例:
給出 nums = [1, 5, 1, 1, 6, 4],一種方案為 [1, 4, 1, 5, 1, 6].
給出 nums = [1, 3, 2, 2, 3, 1],一種方案為 [2, 3, 1, 3, 1, 2].
思路:利用nth_element,找到nums陣列的中位數mid
將nums陣列的下標從[0, 1, 2, … , n - 1,] 對映到 [1, 3, 5, … , 0, 2, 4, …]得到陣列a
在a中以中位數為界,將大於mid的元素排在中位數字置之前,將小於mid的元素排在中位數字置之後
#ifndef c507_h
#define c507_h
#include
#include
#include
using
namespace
std;
class solution
}};#endif
擺動排序 II
擺動排序 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...
擺動排序 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...
演算法 擺動排序 I II
給你乙個沒有排序的陣列,請將原陣列就地重新排列滿足如下性質 nums 0 nums 1 nums 2 nums 3 允許相鄰元素相等先對陣列進行排序,然後依次把兩兩相鄰的元素進行交換,最終成為乙個波動遞增的數列,滿足題目要求 public void wigglesort int nums 先對陣列進...