【leetcode】4. Median of Two Sorted Arrays(Python & C++)
2017-08-24 11:39
483 查看
4. Median of Two Sorted Arrays
题目链接4.1 题目描述:
There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
4.2 解题思路:
思路一:首先处理特殊情况,如果其中一个数组为空,则根据长度可直接返回另一个数组的中位数。否则同时遍历两个数组,将其按照顺序合并到一个数组中,然后根据长度即可返回中位数。4.3 C++代码:
1、思路一代码(82ms):class Solution93_1 { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { if (nums1.size() == 0 && nums2.size() == 0) return 0; if (nums1.size() == 0) { int l = nums2.size() / 2; if (nums2.size() % 2 == 0) return double(nums2[l - 1] + nums2[l]) / 2; else return double(nums2[l]); } if (nums2.size() == 0) { int l = nums1.size() / 2; if (nums1.size() % 2 == 0) return double(nums1[l - 1] + nums1[l]) / 2; else return double(nums1[l]); } int ll = (nums1.size() + nums2.size()) / 2; int lu = (nums1.size() + nums2.size()) % 2; int i = 0, j = 0; vector<int>a; while (i < nums1.size() && j < nums2.size()) { if (nums1[i] <= nums2[j]) { a.push_back(nums1[i]); i++; } else { a.push_back(nums2[j]); j++; } } while (i < nums1.size()) { a.push_back(nums1[i]); i++; } while (j < nums2.size()) { a.push_back(nums2[j]); j++; } if (lu == 0) return double(a[ll-1] + a[ll]) / 2; else return double(a[ll]); } };
4.4 Python代码:
1、思路一代码(118ms):class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ if len(nums1)==0 and len(nums2)==0: return 0 if len(nums1)==0: l = len(nums2) / 2 if len(nums2)% 2 == 0: return float(nums2[l - 1] + nums2[l]) / 2 else: return float(nums2[l]) if len(nums2)==0: l = len(nums1) / 2 if len(nums1)% 2 == 0: return float(nums1[l - 1] + nums1[l]) / 2 else: return float(nums1[l]) ll = (len(nums1) + len(nums2)) / 2 lu = (len(nums1) + len(nums2)) % 2 i = 0 j = 0 a=[] while i<len(nums1) and j<len(nums2): if nums1[i] <= nums2[j]: a.append(nums1[i]) i+=1 else: a.append(nums2[j]) j+=1 while i<len(nums1) : a.append(nums1[i]) i+=1 while j<len(nums2): a.append(nums2[j]) j+=1 if lu == 0: return float(a[ll-1]+a[ll])/2 else: return float(a[ll])
相关文章推荐
- Leetcode 4. Median of Two Sorted Arrays(python)
- Leetcode4. Median of Two Sorted Arrays_python,时间top15%
- python写算法题:leetcode: 4. Median of Two Sorted Arrays
- 【Leetcode解题记录】4. Median of Two Sorted Arrays
- leetcode 4. Median of Two Sorted Arrays
- leetcode 4. Median of Two Sorted Arrays(Hard)
- 【leetcode】4. Median of Two Sorted Arrays
- LeetCode 4. Median of Two Sorted Arrays (分治)
- LeetCode 4. Median of Two Sorted Arrays
- 【leetcode】4. Median of Two Sorted Arrays
- Leetcode 4. Median of Two Sorted Arrays
- [leetcode] 【数组】4. Median of Two Sorted Arrays
- leetcode: 4. Median of Two Sorted Arrays (java)
- LeetCode 4. Median of Two Sorted Arrays
- 【leetcode】160. Intersection of Two Linked Lists(Python & C++)
- 【leetcode】4. Median of Two Sorted Arrays
- LeetCode题解:4. Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays-python
- LeetCode4. Median of Two Sorted Arrays(寻找第k小数:分治O(log(n+m)))
- LeetCode代码分析——4. Median of Two Sorted Arrays