leetcode每日一题——4. Median of Two Sorted Arrays

题目:给两个已经排好序的数组,nums1和nums2,把两个数组合起来排好序输出排在中间的数,如果是偶数个数那就输出中间两个数的平均数,要求复杂度为O(log(m+n))
思路:感觉自己思路不对,但是不知道为什么这样做还A掉了。
开一个新数组,俩指针分别指向两个数组,从左往右遍历小的放进新数组里头。最后输出中间数即可。
但是这样做的话复杂度应该是O(m+n),今天头疼。。明天再写正确方法,下面这个是自己做的方法
import java.util.ArrayList;
import java.lang.Integer;

class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        ArrayList<Integer> result = new ArrayList<Integer>();
        int i=0;
        int j=0;
        while(i<nums1.length&&j<nums2.length){
            if(nums1[i]<nums2[j]){
                result.add(nums1[i]);
                i++;
            }else{
                result.add(nums2[j]);
                j++;
            }
        }
        while(i<nums1.length){
            result.add(nums1[i++]);
        }
        while(j<nums2.length){
            result.add(nums2[j++]);
        }
        int size=result.size();
        double result1;
        if(size%2==0){
            result1=((result.get(size/2).intValue())+(result.get(size/2-1).intValue()))/2.0;
        }
            
        else{
            result1=(double)(result.get(size/2).intValue());
        }
        return result1;
    }
}

收获:

1.数组长度直接这样获取即可:
num1.length

2.Java中的动态数组ArrayList在定义的时候不能直接在<>里写int、double等基本类型,需要写Integer、Double
3.ArrayList数组大小的获取用.size();方法即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值