-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolution.java
More file actions
58 lines (55 loc) · 2.39 KB
/
Solution.java
File metadata and controls
58 lines (55 loc) · 2.39 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
55
56
57
58
package LeetCode.Array.arrayMedian;
import java.util.ArrayList;
public class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
//如果nums1数组为空,直接返回nums2的中位数
if(nums1 == null || nums1.length == 0){
//如果nums2的元素个数为奇数个,直接返回中间元素
if(nums2.length % 2 == 1)
return nums2[nums2.length / 2];
else {//如果nums2的元素个数为偶数个,直接返回中间两个的平均值
double median = ((double)(nums2[nums2.length / 2] + nums2[(nums2.length / 2) -1]))/2;
return median;
}
//如果nums2为空,直接返回nums1的中位数
}else if(nums2 == null || nums2.length == 0){
if(nums1.length % 2 == 1)
return nums1[nums1.length / 2];
else {
double median = ((double)(nums1[nums1.length / 2] + nums1[(nums1.length / 2) -1]))/2;
return median;
}
}else{
ArrayList<Integer> array = new ArrayList<>();
int j = 0;
for(int i = 0;i <= nums1.length;i++) {
//如果nums2有剩余,将剩余元素直接放在集合末尾
if (i == nums1.length && j != nums2.length) {
for(int m = j;m < nums2.length;m++)
array.add(nums2[m]);
} //如果nums1有剩余,将剩余元素直接放在集合末尾
else if(j == nums2.length && i != nums1.length){
for(int m = i;m < nums1.length;m++)
array.add(nums1[m]);
break;
}//将nums1和nums2中元素按照从小到大顺序放在集合中
else if(i != nums1.length){
if (nums1[i] <= nums2[j]) {
array.add(nums1[i]);
} else {
array.add(nums2[j]);
i = i-1;
j++;
}
}
else break;
}
if(array.size() % 2 == 1)
return array.get(array.size()/2);
else {
double meidan = ((double)(array.get(array.size() / 2)+array.get(array.size() / 2 -1)))/2;
return meidan;
}
}
}
}