@@ -20,47 +20,47 @@ Can you do it in O(n) time and/or in-place with O(1) extra space?
2020 */
2121public class _324 {
2222
23- /**Credit: https://discuss.leetcode.com/topic/41464/step-by-step-explanation-of-index-mapping-in-java
24- * TODO: completely understand it. */
25- public void wiggleSort (int [] nums ) {
26- int median = findKthLargest (nums , (nums .length + 1 ) / 2 );
27- int n = nums .length ;
23+ public static class Solution1 {
24+ /** Credit: https://discuss.leetcode.com/topic/41464/step-by-step-explanation-of-index-mapping-in-java */
25+ public void wiggleSort (int [] nums ) {
26+ int median = findKthLargest (nums , (nums .length + 1 ) / 2 );
27+ int n = nums .length ;
2828
29- int left = 0 ;
30- int i = 0 ;
31- int right = n - 1 ;
29+ int left = 0 ;
30+ int i = 0 ;
31+ int right = n - 1 ;
3232
33- while (i <= right ) {
33+ while (i <= right ) {
3434
35- if (nums [newIndex (i , n )] > median ) {
36- swap (nums , newIndex (left ++, n ), newIndex (i ++, n ));
37- } else if (nums [newIndex (i , n )] < median ) {
38- swap (nums , newIndex (right --, n ), newIndex (i , n ));
39- } else {
40- i ++;
35+ if (nums [newIndex (i , n )] > median ) {
36+ swap (nums , newIndex (left ++, n ), newIndex (i ++, n ));
37+ } else if (nums [newIndex (i , n )] < median ) {
38+ swap (nums , newIndex (right --, n ), newIndex (i , n ));
39+ } else {
40+ i ++;
41+ }
4142 }
4243 }
43- }
4444
45- private int findKthLargest (int [] nums , int k ) {
46- PriorityQueue <Integer > maxHeap = new PriorityQueue <>(Collections .reverseOrder ());
47- for (int i : nums ) {
48- maxHeap .offer (i );
49- }
50- while (k -- > 1 ) {
51- maxHeap .poll ();
45+ private int findKthLargest (int [] nums , int k ) {
46+ PriorityQueue <Integer > maxHeap = new PriorityQueue <>(Collections .reverseOrder ());
47+ for (int i : nums ) {
48+ maxHeap .offer (i );
49+ }
50+ while (k -- > 1 ) {
51+ maxHeap .poll ();
52+ }
53+ return maxHeap .poll ();
5254 }
53- return maxHeap .poll ();
54- }
5555
56- private void swap (int [] nums , int i , int j ) {
57- int tmp = nums [i ];
58- nums [i ] = nums [j ];
59- nums [j ] = tmp ;
60- }
56+ private void swap (int [] nums , int i , int j ) {
57+ int tmp = nums [i ];
58+ nums [i ] = nums [j ];
59+ nums [j ] = tmp ;
60+ }
6161
62- private int newIndex (int index , int n ) {
63- return (1 + 2 * index ) % (n | 1 );
62+ private int newIndex (int index , int n ) {
63+ return (1 + 2 * index ) % (n | 1 );
64+ }
6465 }
65-
6666}
0 commit comments