给定两个数组arr1[]和arr2[] 分别由N和M 个整数组成,以及两个整数X和Y ,任务是检查是否可以从arr1[] 中选择X元素,从arr2[] 中选择Y元素,例如这些X元素中最大的元素小于这些Y元素中的最小元素。如果可能,则打印“是” 。否则,打印“否” 。
例子:
Input: arr1[] = {1, 1, 1, 1, 1}, arr2[] = {2, 2}, X = 3, Y = 1
Output: Yes
Explanation: Every possible selection satisfies the above condition as every element of arr1[] is less than minimum element in the arr2[].
Input: arr1[] = {1, 2, 3}, arr2[] = {3, 4, 5}, X = 2, Y = 1
Output: Yes
Explanation: One possible selection is take elements at indices 0 and 1 from arr1[] and indices 0 from arr2[], i.e {1, 2} and {3}.
方法:我们的想法是升序两个数组进行排序,然后选择从ARR1 []和ARR2的最后一个Y元素的第一个X元素[]。请按照以下步骤解决问题:
- 按升序对两个数组进行排序。
- 如果X大于N或Y大于M ,则打印“否”,因为不可能选择任何此类组合。
- 否则,如果arr1[X – 1] 的值小于arr2[M – Y] ,则打印“Yes” 。
- 否则,打印“否” 。如果以上条件都不满足。
下面是上述方法的实现:
C++
Java
Python3
C#
Javascript
时间复杂度: O(N*log N)
辅助空间O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。