-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindMedianSortedArrays.java
More file actions
54 lines (42 loc) · 1.64 KB
/
FindMedianSortedArrays.java
File metadata and controls
54 lines (42 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class FindMedianSortedArrays {
private double calculateMedian(int[] resultArray) {
int len = resultArray.length;
double median = 0d;
if(len>0) {
if(len % 2 == 0) { // when there are even no. of elements in array
median = resultArray[len/2] + resultArray[(len/2)-1];
median /= 2;
} else { // when odd no. of elements
median = resultArray[len/2];
}
}
return median;
}
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int i=0, j=0, k=0;
int l1 = nums1!=null ? nums1.length : 0;
int l2 = nums2!=null ? nums2.length : 0;
int[] resultArray = new int[l1+l2];
// Merge both arrays first
if(l1 == 0 || l2 == 0) {
resultArray = l1==0 ? nums2 : nums1; //Assuming nums2 is not null.
} else {
while(i<nums1.length || j<nums2.length) {
if(i != nums1.length && j != nums2.length) {
if(nums1[i] < nums2[j]) {
resultArray[k++] = nums1[i++];
} else {
resultArray[k++] = nums2[j++];
}
continue;
} else if(i == nums1.length) {
resultArray[k++] = nums2[j++];
} else if(j == nums2.length) {
resultArray[k++] = nums1[i++];
}
}
}
// Calclate median and return
return calculateMedian(resultArray);
}
}