4. Median of Two Sorted Arrays

一看题目难度是“难”,吓到我了,上午想了一会就看讨论组的解法了,解法都很发杂呀!!!下午来到实验室看了一篇中文博客,说有两种解决方案,第一种就是将两个数组合并成一个数组,我的解法就是这样子的,竟然ac掉了!!

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Sum4 {

    private static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int sumLen=nums1.length+nums2.length;
        int median = sumLen%2;
        int middle = sumLen/2;
        int[] num = new int[sumLen];
        int k=0;
        for (int i = 0,j=0; i < nums1.length||j<nums2.length; ) {
            if(i<nums1.length&&j<nums2.length){
                if(nums1[i]>=nums2[j]){
                    num[k]= nums2[j];
                    j++;
                }else {
                    num[k]= nums1[i];
                    i++;
                }
            }else if(i==nums1.length&&j!=nums2.length){
                num[k] = nums2[j]; 
                j++;
            }else if(i!=nums1.length&&j==nums2.length){
                num[k] = nums1[i]; 
                i++;
            }
            System.out.println(num[k]);
            k++;
            
        }
        if(median==0){
            double a= num[middle];
            double b = num[middle-1];
            return (a+b)/2;
        }else {
            return num[middle];
        }
        
    }
    public static void main(String[] args) {
        int[] nums1 = new int[]{1,3};
        int[] nums2 = new int[]{2,3};
        Double double1 = findMedianSortedArrays(nums1,nums2);
        System.out.println(double1);
    }
}
原文地址:https://www.cnblogs.com/Michael2397/p/8033188.html