From 3535bcfec3cadb7cf1e5b367b76aa203a0a4044f Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Sat, 26 Nov 2022 22:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=A8=E8=B5=9B320?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/contest/y2022/m11/Week320.java | 91 ++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/main/java/contest/y2022/m11/Week320.java diff --git a/src/main/java/contest/y2022/m11/Week320.java b/src/main/java/contest/y2022/m11/Week320.java new file mode 100644 index 0000000..f84ad06 --- /dev/null +++ b/src/main/java/contest/y2022/m11/Week320.java @@ -0,0 +1,91 @@ +package contest.y2022.m11; + +import com.code.leet.entiy.TreeNode; + +import java.util.*; + +public class Week320 { + public static void main(String[] args) { + Week320 solution = new Week320(); + } + + public List> closestNodes(TreeNode root, List queries) { + PriorityQueue minheap = new PriorityQueue<>(); + PriorityQueue maxheap = new PriorityQueue<>(Collections.reverseOrder()); + Queue queue = new LinkedList<>(); + queue.add(root); + while (!queue.isEmpty()) { + int size = queue.size(); + for (int i = 0; i < size; i++) { + TreeNode node = queue.poll(); + minheap.add(node.val); + maxheap.add(node.val); + if (node.left != null) { + queue.add(node.left); + } + if (node.right != null) { + queue.add(node.right); + } + } + } + int[][] arrs = new int[queries.size()][2]; + Collections.sort(queries); + for (int i = 0; i < queries.size(); i++) { + int min = -1; + if (minheap.isEmpty()) { + arrs[i][0] = -1; + } else { + min = minheap.poll(); + while (min <= queries.get(i)) { + if (minheap.isEmpty()) { + break; + } + min = minheap.poll(); + } + } + arrs[i][0] = min; + int max = -1; + if (maxheap.isEmpty()) { + arrs[queries.size() - i - 1][0] = -1; + } else { + max = maxheap.poll(); + while (max >= queries.get(i)) { + if (maxheap.isEmpty()) { + break; + } + max = maxheap.poll(); + } + } + arrs[queries.size() - i - 1][1] = max; + } + List> list = new ArrayList<>(); + for (int[] arr : arrs) { + list.add(Arrays.asList(arr[0], arr[1])); + } + return list; + } + + public int unequalTriplets(int[] nums) { + Map map = new HashMap<>(); + for (int num : nums) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + if (map.size() < 3) { + return 0; + } + int res = 0; + List list = new ArrayList<>(); + for (int key : map.keySet()) { + list.add(map.get(key)); + } + for (int i = 0; i < list.size(); i++) { + for (int j = i + 1; j < list.size(); j++) { + int tmp = list.get(i) * list.get(j); + for (int k = j + 1; k < list.size(); k++) { + res += tmp * list.get(k); + } + } + } + return res; + } +}