給你乙個沒有排序的陣列,請將原陣列就地重新排列滿足如下性質
nums[0] <= nums[1] >= nums[2] <= nums[3]....
允許相鄰元素相等先對陣列進行排序,然後依次把兩兩相鄰的元素進行交換,最終成為乙個波動遞增的數列,滿足題目要求
public void wigglesort(int nums)
//先對陣列進行排序
arrays.sort(nums);
//取中心軸
int axis = nums.length / 2;
//建立結果陣列
int result = new int[nums.length];
if (nums.length % 2 == 0)
//把後半部分元素正向插入2,4,6...
int k = 1;
for (int i = axis; i < nums.length; i++)
} else
//把後半部分元素正向插入2,4,6...
int k = 1;
for (int i = axis + 1; i < nums.length; i++)
}for (int i=1;i較上一思路,這次採用了從大端到小端的逆向插入
相當於把上乙個思路中的遞增三角形進行了水平翻轉,變成乙個遞減三角形,分成兩半,穿插成乙個波**像
同時也巧妙避開了 4 5 5 6 的問題
擺動排序 II LintCode
給你乙個陣列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 思路...
擺動排序 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...