Class Solution

java.lang.Object
g1701_1800.s1782_count_pairs_of_nodes.Solution

public class Solution extends Object
1782 - Count Pairs Of Nodes.<p>Hard</p> <p>You are given an undirected graph defined by an integer <code>n</code>, the number of nodes, and a 2D integer array <code>edges</code>, the edges in the graph, where <code>edges[i] = [u<sub>i</sub>, v<sub>i</sub>]</code> indicates that there is an <strong>undirected</strong> edge between <code>u<sub>i</sub></code> and <code>v<sub>i</sub></code>. You are also given an integer array <code>queries</code>.</p> <p>Let <code>incident(a, b)</code> be defined as the <strong>number of edges</strong> that are connected to <strong>either</strong> node <code>a</code> or <code>b</code>.</p> <p>The answer to the <code>j<sup>th</sup></code> query is the <strong>number of pairs</strong> of nodes <code>(a, b)</code> that satisfy <strong>both</strong> of the following conditions:</p> <ul> <li><code>a < b</code></li> <li><code>incident(a, b) > queries[j]</code></li> </ul> <p>Return <em>an array</em> <code>answers</code> <em>such that</em> <code>answers.length == queries.length</code> <em>and</em> <code>answers[j]</code> <em>is the answer of the</em> <code>j<sup>th</sup></code> <em>query</em>.</p> <p>Note that there can be <strong>multiple edges</strong> between the same two nodes.</p> <p><strong>Example 1:</strong></p> <p><img src="https://assets.leetcode.com/uploads/2021/06/08/winword_2021-06-08_00-58-39.png" alt="" /></p> <p><strong>Input:</strong> n = 4, edges = [[1,2],[2,4],[1,3],[2,3],[2,1]], queries = [2,3]</p> <p><strong>Output:</strong> [6,5]</p> <p><strong>Explanation:</strong> The calculations for incident(a, b) are shown in the table above. The answers for each of the queries are as follows:</p> <ul> <li> <p>answers[0] = 6. All the pairs have an incident(a, b) value greater than 2.</p> </li> <li> <p>answers[1] = 5. All the pairs except (3, 4) have an incident(a, b) value greater than 3.</p> </li> </ul> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> n = 5, edges = [[1,5],[1,5],[3,4],[2,5],[1,3],[5,1],[2,3],[2,5]], queries = [1,2,3,4,5]</p> <p><strong>Output:</strong> [10,10,9,8,6]</p> <p><strong>Constraints:</strong></p> <ul> <li><code>2 <= n <= 2 * 10<sup>4</sup></code></li> <li><code>1 <= edges.length <= 10<sup>5</sup></code></li> <li><code>1 <= u<sub>i</sub>, v<sub>i</sub> <= n</code></li> <li><code>u<sub>i</sub> != v<sub>i</sub></code></li> <li><code>1 <= queries.length <= 20</code></li> <li><code>0 <= queries[j] < edges.length</code></li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • countPairs

      public int[] countPairs(int n, int[][] edges, int[] queries)