酒煮青梅392 2024-01-13 20:02 采纳率: 66%
浏览 3
已结题

寻找两个正序数组的中位数java

img


class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int i = 0, j = 0, k = 0;
        int n = nums1.length;
        int m = nums2.length;
        int t = m + n;
        int temp[] = new int[t];
        while (i < n && j < m) {
            if (nums1[i] >= nums2[j]) {
                temp[k++] = nums1[i++];
            } else {
                temp[k++] = nums2[j++];
            }
        }

        while (i < n) {
            temp[k++] = nums1[i++];
        }

        while (j < m) {
            temp[k++] = nums2[j++];
        }

        int len = m + n;
        double mid;

        int middle;
        if (len % 2 == 0) {
            middle = len / 2;
            mid = (temp[middle - 1] + temp[middle]) / 2.0;
        } else {
            middle = len / 2;
            mid = temp[middle - 1];
        }
        return mid;
    }
}

img

img

力扣上的一道小题,不知道为啥会这样,我认为逻辑没错误

  • 写回答

2条回答 默认 最新

  • micthis 2024-01-13 20:54
    关注
    class Solution {
        public double findMedianSortedArrays(int[] nums1, int[] nums2) {
            int i = 0, j = 0, k = 0;
            int n = nums1.length;
            int m = nums2.length;
            int t = m + n;
            int temp[] = new int[t];
            while (i < n && j < m) {
                 if (nums1[i] <= nums2[j]) {
                 //if (nums1[i] >= nums2[j]) {
                    temp[k++] = nums1[i++];
                } else {
                    temp[k++] = nums2[j++];
                }
            }
            while (i < n) {
                temp[k++] = nums1[i++];
            }
            while (j < m) {
                temp[k++] = nums2[j++];
            }
            int len = m + n;
            double mid;
            int middle;
            if (len % 2 == 0) {
                middle = len / 2;
                mid = (temp[middle - 1] + temp[middle]) / 2.0;
            } else {
                middle = len / 2;
                mid = temp[middle];
                //mid = temp[middle - 1];
            }
            return mid;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月16日
  • 已采纳回答 1月14日
  • 创建了问题 1月13日