4-median-of-two-sorted-arrays
阿新 • • 發佈:2018-12-16
題目描述:
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
You may assume nums1 and nums2 cannot be both empty.
Example 1:
nums1 = [1, 3] nums2 = [2]
The median is 2.0 Example 2:
nums1 = [1, 2] nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
程式碼解決:
package com.jack.algorithm; /** * create by jack 2018/10/20 * * @auther jack * @date: 2018/10/20 17:38 * @Description: * 求兩個有序陣列的中位數 */ public class MedianOfTwoSortedArrays { /** * 題目描述: * https://leetcode.com/problems/median-of-two-sorted-arrays/ * @param nums1 * @param nums2 * @return */ public static double findMedianSortedArrays(int[] nums1, int[] nums2) { int length1 = nums1.length; int length2 = nums2.length; int length = length1+length2; int [] a = new int [length]; double rs = 0; if (length1 == 0 && length2 >0) { for (int i=0;i<length2;i++) { a[i] = nums2[i]; } } else if (length1 > 0 && length2 == 0) { for (int i=0;i<length1;i++) { a[i] = nums1[i]; } } else if (length1 > 0 && length2 > 0) { int i = 0; int j = 0; for (int k=0;k<length;k++) { if (i >= length1 && j < length2) { a[k] = nums2[j]; j++; continue; } if (i < length1 && j >= length2) { a[k] = nums1[i]; i++; continue; } if (nums1[i] <= nums2[j]) { if (i < length1) { a[k] = nums1[i]; i++; } } else { if (j < length2) { a[k] = nums2[j]; j++; } } } } if (length % 2 == 0) { rs = (a[length/2-1]+a[length/2])/2.0; } else { rs = a[length/2]; } return rs; } public static void main(String[] args) { int [] nums1 = new int[]{1,2}; //int [] nums2 = new int[]{3,4}; int [] nums2 = new int[]{3,4}; double d = findMedianSortedArrays(nums1,nums2); System.out.println("中位數為:"+d); } }
github地址: