Finding kth smallest number from n sorted arrays

后端 未结 8 1160
谎友^
谎友^ 2020-12-02 06:31

So, you have n sorted arrays (not necessarily of equal length), and you are to return the kth smallest element in the combined array (i.e the combined array formed by mergin

8条回答
  •  甜味超标
    2020-12-02 06:58

    Please find the below C# code to Find the k-th Smallest Element in the Union of Two Sorted Arrays. Time Complexity : O(logk)

    public int findKthElement(int k, int[] array1, int start1, int end1, int[] array2, int start2, int end2)
        {
            // if (k>m+n) exception
            if (k == 0)
            {
                return Math.Min(array1[start1], array2[start2]);
            }
            if (start1 == end1)
            {
                return array2[k];
            }
            if (start2 == end2)
            {
                return array1[k];
            }
            int mid = k / 2;
            int sub1 = Math.Min(mid, end1 - start1);
            int sub2 = Math.Min(mid, end2 - start2);
            if (array1[start1 + sub1] < array2[start2 + sub2])
            {
                return findKthElement(k - mid, array1, start1 + sub1, end1, array2, start2, end2);
            }
            else
            {
                return findKthElement(k - mid, array1, start1, end1, array2, start2 + sub2, end2);
            }
        }
    

提交回复
热议问题