04.寻找两个有序数组的中位数

题目:

第一次提交:

 1 class Solution {
 2     public double findMedianSortedArrays(int[] nums1, int[] nums2) {
 3         //目标: 将2个有序数组合并为一个有序数组
 4         int index01 = (nums1.length+nums2.length-1)/2;
 5         int index02 = (nums1.length+nums2.length)/2;
 6         int[] nums3 = new int[nums1.length+nums2.length];
 7         int i=0;
 8         int j=0;
 9         int k=0;
10         while(i!=nums1.length||j!=nums2.length){
11             if(i==nums1.length){
12                 for(;j!=nums2.length;j++){
13                     nums3[k++] = nums2[j];
14                 }
15                 //do nums2
16             }else if(j==nums2.length){
17                 //do nums1
18                  for(;i!=nums1.length;i++){
19                     nums3[k++] = nums1[i];
20                 }
21             }else{
22                 if(nums1[i]<nums2[j]){
23                     nums3[k++]=nums1[i++];
24                 }else{
25                     nums3[k++]=nums2[j++];
26                 }
27             }
28         }
29         return (nums3[index01]+nums3[index02])/2.0;
30         
31         
32     }
33 }

结果:

我吃惊了,第一次居然就通过了,问题是这题目的等级是:难。

第一次提交只是能够将算法实现,时间复杂度不可估计 O(N2)都有。需要继续改进

原文地址:https://www.cnblogs.com/baizhuang/p/11414838.html