1class Heap:2def __init__(self):3self.q = []45def push(self, data):6i = len(self.q)7self.q.append(data)8while i > 0:9if self.q[i] > self.q[(i - 1) // 2]:10self.q[i], self.q[(i - 1) // 2] = self.q[(i - 1) // 2], self.q[i]11i = (i - 1) // 212else:13return1415def pop(self):16if len(self.q) == 0:17return18self.q[0] = self.q[-1]19self.q.pop()2021def heapify(i):22ind = i23l = 2 * i + 124r = 2 * i + 225if r < len(self.q) and self.q[ind] < self.q[r]:26ind = r27if l < len(self.q) and self.q[ind] < self.q[l]:28ind = l29if ind != i:30self.q[i], self.q[ind] = self.q[ind], self.q[i]31heapify(ind)3233heapify(0)3435def top(self):36return self.q[0]373839class Solution:40def wiggleSort(self, nums: List[int]) -> None:41n = len(nums)42h = Heap()43for i in nums:44h.push(i)45for i in range(1, n, 2):46nums[i] = h.top()47h.pop()48for i in range(0, n, 2):49nums[i] = h.top()50h.pop()