From 08d5d1c4bc4bb59ee1102dfdfa1e6506d8f87afd Mon Sep 17 00:00:00 2001 From: ehlxr Date: Tue, 20 Oct 2020 18:15:10 +0800 Subject: [PATCH] update at 2020-10-20 18:15:10 by ehlxr --- .../java/me/ehlxr/leetcode/Solution5.java | 40 +++++++++++++++++++ src/main/java/me/ehlxr/sort/HeapSort.java | 15 +++++++ 2 files changed, 55 insertions(+) create mode 100644 src/main/java/me/ehlxr/leetcode/Solution5.java diff --git a/src/main/java/me/ehlxr/leetcode/Solution5.java b/src/main/java/me/ehlxr/leetcode/Solution5.java new file mode 100644 index 0000000..15d24cc --- /dev/null +++ b/src/main/java/me/ehlxr/leetcode/Solution5.java @@ -0,0 +1,40 @@ +package me.ehlxr.leetcode; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.PriorityQueue; + +/** + * @author ehlxr + * @since 2020-10-20 17:54. + */ +public class Solution5 { + + public int findKthLargest(int[] nums, int k) { + PriorityQueue queue = new PriorityQueue<>(); + for (int val : nums) { + queue.add(val); + if (queue.size() > k) { + queue.poll(); + } + } + return queue.peek(); + } + + public static void main(String[] args) { + int[] arr = {4, 6, 8, 5, 9}; + // PriorityQueue queue = new PriorityQueue<>(); + // for (int val : arr) { + // queue.add(val); + // } + // System.out.println(Arrays.toString(queue.toArray())); + // + // + // arr = new int[]{4, 6, 8, 5, 9}; + PriorityQueue maxHeap = new PriorityQueue<>(arr.length, (o1, o2) -> o2 - o1); + for (int val : arr) { + maxHeap.add(val); + } + System.out.println(Arrays.toString(maxHeap.toArray())); + } +} diff --git a/src/main/java/me/ehlxr/sort/HeapSort.java b/src/main/java/me/ehlxr/sort/HeapSort.java index 6231ef2..313570c 100644 --- a/src/main/java/me/ehlxr/sort/HeapSort.java +++ b/src/main/java/me/ehlxr/sort/HeapSort.java @@ -1,6 +1,7 @@ package me.ehlxr.sort; import java.util.Arrays; +import java.util.PriorityQueue; /** * 堆排序 @@ -32,6 +33,20 @@ public class HeapSort { int[] arr = {4, 6, 8, 5, 9}; sort(arr); System.out.println("results: " + Arrays.toString(arr)); + + // PriorityQueue queue = new PriorityQueue<>(); + // for (int val : arr) { + // queue.add(val); + // } + // System.out.println(Arrays.toString(queue.toArray())); + // + // + arr = new int[]{4, 6, 8, 5, 9}; + PriorityQueue maxHeap = new PriorityQueue<>(arr.length, (o1, o2) -> o2 - o1); + for (int val : arr) { + maxHeap.add(val); + } + System.out.println(Arrays.toString(maxHeap.toArray())); } public static void sort(int[] arr) {