Sponsored
Sponsored
In this approach, we perform the following steps:
Time Complexity: O((n + m) log n) where n = number of items and m = number of queries.
Space Complexity: O(n) for storing the processed items data.
1using System;
2using System.Collections.Generic;
3
4public class Solution {
5 public int[] MaxBeautyForQueries(int[][] items, int[] queries) {
6 Array.Sort(items, (a, b) => a[0] - b[0]);
7 int[] maxBeauties = new int[items.Length];
8 int maxBeauty = 0;
9
10 for (int i = 0; i < items.Length; i++) {
11 maxBeauty = Math.Max(maxBeauty, items[i][1]);
12 maxBeauties[i] = maxBeauty;
13 }
14
15 int[] result = new int[queries.Length];
16 for (int i = 0; i < queries.Length; i++) {
17 int idx = Array.BinarySearch(items, new int[]{queries[i], int.MaxValue}, Comparer<int[]>.Create((a, b) => a[0] - b[0]));
18 if (idx < 0) idx = ~idx - 1;
19 result[i] = idx >= 0 ? maxBeauties[idx] : 0;
20 }
21 return result;
22 }
23
24 public static void Main(string[] args) {
25 var solution = new Solution();
26 int[][] items = new int[][] { new int[] {1,2}, new int[] {3,2}, new int[] {2,4}, new int[] {5,6}, new int[] {3,5} };
27 int[] queries = new int[] { 1, 2, 3, 4, 5, 6 };
28 int[] result = solution.MaxBeautyForQueries(items, queries);
29 Console.WriteLine(string.Join(" ", result));
30 }
31}
This method leverages C# collections and algorithms to supply a projected maximum beauty for sorted item data. Here, a binary search optimizes query resolution by narrowing potential indexes efficiently.
Coordinate compression can be used to reduce problem complexity when dealing with large range values like prices. In this approach:
Time Complexity: O((n + m) log(n + m)) due to sorting during compression.
Space Complexity: O(n + m) for storing all price points and decision arrays.
using System.Collections.Generic;
public class Solution {
public int[] MaxBeautyWithCompression(int[][] items, int[] queries) {
var priceSet = new SortedSet<int>();
foreach (var item in items) priceSet.Add(item[0]);
foreach (var query in queries) priceSet.Add(query);
var prices = new List<int>(priceSet);
var dp = new Dictionary<int, int>();
foreach (var price in prices) dp[price] = 0;
foreach (var item in items) {
dp[item[0]] = Math.Max(dp[item[0]], item[1]);
}
int currentMax = 0;
foreach (var price in prices) {
currentMax = Math.Max(currentMax, dp[price]);
dp[price] = currentMax;
}
var result = new int[queries.Length];
for (int i = 0; i < queries.Length; i++) {
var index = prices.BinarySearch(queries[i]);
if (index < 0) index = ~index - 1;
result[i] = index >= 0 ? dp[prices[index]] : 0;
}
return result;
}
public static void Main(string[] args) {
var solution = new Solution();
int[][] items = new int[][] { new int[] {1,2}, new int[] {3,2}, new int[] {2,4}, new int[] {5,6}, new int[] {3,5} };
int[] queries = new int[] { 1, 2, 3, 4, 5, 6 };
int[] result = solution.MaxBeautyWithCompression(items, queries);
Console.WriteLine(string.Join(" ", result));
}
}
C# Hash and SortedSet are employed for index compression, allowing a reduced coordinate system upon which a dynamic array of maximum beauties can efficiently resolve queries using the BinarySearch feature for indexed price identification.