MCPcopy
hub / github.com/HuberTRoy/leetCode / wiggleSort

Method wiggleSort

Sorted/WiggleSortII.py:59–94  ·  view source on GitHub ↗

:type nums: List[int] :rtype: void Do not return anything, modify nums in-place instead.

(self, nums)

Source from the content-addressed store, hash-verified

57"""
58class Solution(object):
59 def wiggleSort(self, nums):
60 """
61 :type nums: List[int]
62 :rtype: void Do not return anything, modify nums in-place instead.
63 """
64
65 nums.sort()
66 middle = nums[len(nums) // 2]
67 larger = [i for i in nums[len(nums)//2:] if i != middle]
68 smaller = [i for i in nums[:len(nums)//2] if i != middle]
69 equal = [i for i in nums if i == middle]
70
71 larger.reverse()
72 smaller.reverse()
73 length = len(nums)
74 odd = 1
75 even = length - 1 if (length-1) % 2 == 0 else length - 2
76
77 for i in larger:
78 # try:
79 nums[odd] = i
80
81 odd += 2
82
83 for i in smaller:
84 nums[even] = i
85
86 even -= 2
87
88 while even >= 0:
89 nums[even] = equal.pop()
90 even -= 2
91
92 while odd < length:
93 nums[odd] = equal.pop()
94 odd += 2

Callers

nothing calls this directly

Calls 2

reverseMethod · 0.80
popMethod · 0.45

Tested by

no test coverage detected