LeetCode——9/1-2021
4. 寻找两个正序数组的中位数(困难) (挑战失败)
给定两个大小分别为
m
和n
的正序(从小到大)数组nums1
和nums2
。请你找出并返回这两个正序数组的 中位数 。
自己的思路:
-
思路第一种
使用左右两个指针分别指向nums1和nums2的下标,然后将两个数组的数进行比较并判断,当前对比发生翻转时为中位数。
未能完成
-
思路第二种
将两个数组按大小进行组装在一起,形成一个有序的数组,在其中寻找中位数即可
未能完成:组装成一个数组时失败
参考的思路:
-
思路第一种
依旧是将两个数组进行合并,找出中位数
-
思路第二种
使用二分法,将寻找中位数转变为寻找数组中排在第K小的数,下面进行详细介绍此方法
由题目可知,两数组为正序,因此中位数就是这两个数组中 第 k(长度之和/2)个数
此处分为两种情况:
- 数组长度和为偶数,则中位数出现在第k位和k-1位之间
- 数组长度和位奇数,则中位数出现在第k位