Skip to content

Commit a78bdac

Browse files
refactor 324
1 parent 68901dc commit a78bdac

File tree

1 file changed

+33
-33
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+33
-33
lines changed

src/main/java/com/fishercoder/solutions/_324.java

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,47 +20,47 @@ Can you do it in O(n) time and/or in-place with O(1) extra space?
2020
*/
2121
public 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

Comments
 (0)