diff --git a/DSA/DrishtiSeth_590011761/Day_47/Question1.java b/DSA/DrishtiSeth_590011761/Day_47/Question1.java new file mode 100644 index 000000000..924b8e8b7 --- /dev/null +++ b/DSA/DrishtiSeth_590011761/Day_47/Question1.java @@ -0,0 +1,33 @@ +import java.util.*; + +class Solution { + public String[] findRelativeRanks(int[] score) { + int n = score.length; + + int[][] arr = new int[n][2]; + + for (int i = 0; i < n; i++) { + arr[i][0] = score[i]; + arr[i][1] = i; + } + + Arrays.sort(arr, (a, b) -> b[0] - a[0]); + + String[] ans = new String[n]; + + for (int i = 0; i < n; i++) { + int index = arr[i][1]; + + if (i == 0) + ans[index] = "Gold Medal"; + else if (i == 1) + ans[index] = "Silver Medal"; + else if (i == 2) + ans[index] = "Bronze Medal"; + else + ans[index] = String.valueOf(i + 1); + } + + return ans; + } +} diff --git a/DSA/DrishtiSeth_590011761/Day_47/Question2.java b/DSA/DrishtiSeth_590011761/Day_47/Question2.java new file mode 100644 index 000000000..4ad6fba40 --- /dev/null +++ b/DSA/DrishtiSeth_590011761/Day_47/Question2.java @@ -0,0 +1,42 @@ +import java.util.*; + +class Solution { + + public int kthElement(int[] A, int[] B, int k) { + + if (A.length > B.length) + return kthElement(B, A, k); + + int n = A.length; + int m = B.length; + + int low = Math.max(0, k - m); + int high = Math.min(k, n); + + while (low <= high) { + + int cut1 = (low + high) / 2; + int cut2 = k - cut1; + + int left1 = (cut1 == 0) ? Integer.MIN_VALUE : A[cut1 - 1]; + int left2 = (cut2 == 0) ? Integer.MIN_VALUE : B[cut2 - 1]; + + int right1 = (cut1 == n) ? Integer.MAX_VALUE : A[cut1]; + int right2 = (cut2 == m) ? Integer.MAX_VALUE : B[cut2]; + + if (left1 <= right2 && left2 <= right1) { + return Math.max(left1, left2); + } + + else if (left1 > right2) { + high = cut1 - 1; + } + + else { + low = cut1 + 1; + } + } + + return -1; + } +}