😡 LeetCode 4. 寻找两个正序数组的中位数 [二分查找]
355 words
2 minutes
😡 LeetCode 4. 寻找两个正序数组的中位数 [二分查找]
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
算法的时间复杂度应该为 O(log (m+n))。
示例 1:
输入: nums1 = [1,3], nums2 = [2]
输出: 2.00000,即 [1,2,3] 的中位数
示例 2:
输入: nums1 = [1,2], nums2 = [3,4]
输出: 2.50000
思路
- 直接遍历的话复杂度是 , 表示需要考虑二分法
- 有序数组的中位数是该数组中第 小的数 (奇数),或是 和 的均值,可将问题转化为寻找第 小的数
- 每次比较两个数组第 个数的大小,小的那一方的前半部分肯定更小,可以直接舍弃
题解
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
Self-Attention with Relative Position Representations