擺動排序 II LintCode

2021-08-09 23:42:32 字數 616 閱讀 7812

給你乙個陣列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 先對陣列進...