栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode:4.寻找两个正序数组中的中位数(median-of-two-sorted-arrays)Java完整代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode:4.寻找两个正序数组中的中位数(median-of-two-sorted-arrays)Java完整代码

LeetCode:4.寻找两个正序数组中的中位数(median-of-two-sorted-arrays)
思路与题解:LeetCode:4.寻找两个正序数组中的中位数(median-of-two-sorted-arrays)

方法一
import java.util.Scanner;

public class LC4MedianOfTwoSortedArrays
{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String[] str1=sc.nextLine().split(",");
        int[] nums1=new int[str1.length];
        for(int i=0;i 
方法二 
import java.util.Scanner;

public class LC4MedianOfTwoSortedArrays2
{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String[] str1=sc.nextLine().split(",");
        int[] nums1=new int[str1.length];
        for(int i=0;i= n || A[aStart] < B[bStart])) {
                right = A[aStart++];
            } else {
                right = B[bStart++];
            }
        }
        if ((len & 1) == 0)
            return (left + right) / 2.0;
        else
            return right;
    }


}

方法三
import java.util.Scanner;

public class LC4MedianOfTwoSortedArrays2
{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String[] str1=sc.nextLine().split(",");
        int[] nums1=new int[str1.length];
        for(int i=0;i= n || A[aStart] < B[bStart])) {
                right = A[aStart++];
            } else {
                right = B[bStart++];
            }
        }
        if ((len & 1) == 0)
            return (left + right) / 2.0;
        else
            return right;
    }


}

方法四
import java.util.Scanner;

public class LC4MedianOfTwoSortedArray4
{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String[] str1=sc.nextLine().split(",");
        int[] nums1=new int[str1.length];
        for(int i=0;i n) { 
            return findMedianSortedArrays(nums2,nums1); // 保证 m <= n
        }
        int iMin = 0, iMax = m;
        while (iMin <= iMax) {
            int i = (iMin + iMax) / 2;
            int j = (m + n + 1) / 2 - i;
            if (j != 0 && i != m && nums2[j-1] > nums1[i]){ // i 需要增大
                iMin = i + 1; 
            }
            else if (i != 0 && j != n && nums1[i-1] > nums2[j]) { // i 需要减小
                iMax = i - 1; 
            }
            else { // 达到要求,并且将边界条件列出来单独考虑
                int maxLeft = 0;
                if (i == 0) { maxLeft = nums2[j-1]; }
                else if (j == 0) { maxLeft = nums1[i-1]; }
                else { maxLeft = Math.max(nums1[i-1],nums2[j-1]); }
                if ( (m + n) % 2 == 1 ) { return maxLeft; } // 奇数的话不需要考虑右半部分

                int minRight = 0;
                if (i == m) { minRight = nums2[j]; }
                else if (j == n) { minRight =nums1[i]; }
                else { minRight = Math.min(nums2[j], nums1[i]); }

                return (maxLeft + minRight) / 2.0; //如果是偶数的话返回结果
            }
        }
        return 0.0;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号