@@ -20,47 +20,47 @@ Can you do it in O(n) time and/or in-place with O(1) extra space?
20
20
*/
21
21
public class _324 {
22
22
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 ;
28
28
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 ;
32
32
33
- while (i <= right ) {
33
+ while (i <= right ) {
34
34
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
+ }
41
42
}
42
43
}
43
- }
44
44
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 ();
52
54
}
53
- return maxHeap .poll ();
54
- }
55
55
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
+ }
61
61
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
+ }
64
65
}
65
-
66
66
}
0 commit comments