public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int left1 = 0;
int left2 = 0;
int right1 = nums1.length - 1;
int right2 = nums2.length - 1;
double median1 = 0.0;
double median2 = 0.0;
while (left1 < right1) {
left1++;
right1--;
}
while (left2 < right2) {
left2++;
right2--;
}
if (right1 == -1 && right2 != -1) {
median1 = 0;
return (double) (nums2[left2] + nums2[right2]) / 2;
} else if (right2 == -1 && right1 != -1) {
median2 = 0;
return (double) (nums1[left1] + nums1[right1]) / 2;
} else if (right1 == -1 && right2 == -1) {
return 0;
} else if (right1 != -1 && right2 != -1) {
int index_median = 0;
boolean left1_right1 = false;//left1是否已到达right1
boolean left2_right2 = false;
int yu = 0;
int i = 0;
left1 = 0;
left2 = 0;
right1 = nums1.length - 1;
right2 = nums2.length - 1;
index_median = (nums1.length + nums2.length) / 2;
yu = (nums1.length + nums2.length) % 2;
int[] arr = new int[index_median + 1];
while (i <= index_median) {
if (left1_right1) {
arr[i++] = nums2[left2++];
} else if (left2_right2) {
arr[i++] = nums1[left1++];
} else if (nums1[left1] < nums2[left2]) {
arr[i++] = nums1[left1++];
if (left1 == nums1.length) {
left1_right1 = true;
}
} else {
arr[i++] = nums2[left2++];
if (left2 == nums2.length) {
left2_right2 = true;
}
}
}
if (yu == 1) {
return (double) arr[index_median];
} else {
return (double) (arr[index_median - 1] + arr[index_median]) / 2;
}
}
return 0;
}
Leetcode—4.Median of Two Sorted Arrays
最新推荐文章于 2024-10-16 10:13:45 发布