leetcode4:Median of Two Sorted Arrays

来源:互联网 发布:java type类型 编辑:程序博客网 时间:2024/05/29 04:38

  本质上就是一个有序数组合并,然后求中位数,不用细讲,直接给代码!

package _20171021;public class Main {    public static void main(String[] args) {        int[] array1 = {1,26,39,42,52};        int [] array2 = {10,23,45,65,89};        System.out.println(mediaValue(array1, array2));    }    public static double mediaValue(int[] a1, int[] a2) {        int len1 = a1.length;        int len2 = a2.length;        int len = len1 + len2;        int[] all = new int[len];        int l = 0;                                               //标记a1当前位置                      int m = 0;                                               //标记a2当前位置        int n = 0;                                               //标记总的当前位置        while(l < len1 && m < len2) {                            //有序数组合并            if(a1[l] < a2[m]) {                all[n] = a1[l];                n++;                l++;            }            else {                all[n] = a2[m];                n++;                m++;            }        }        while(l < len1) {            all[n] = a1[l];            n++;            l++;        }        while(m < len2) {            all[n] = a2[m];            n++;            m++;        }        int mid = 0;        if((len & 1) != 0) {                                      //奇数            mid = len / 2;            return all[mid] * 1.0;        }        else {                                                    //偶数            mid = len / 2;            return (all[mid-1] + all[mid]) * 1.0 / 2;        }    }}