LeetCode 4:Median of Two Sorted Arrays
来源:互联网 发布:java 泛型强制转换 编辑:程序博客网 时间:2024/06/07 19:24
博客转载请注明地址:
题目描述
题目地址:https://leetcode.com/problems/median-of-two-sorted-arrays/
给出两个有序数组,求两个有序数组合并在一起的中位数是多少?
考察点
- 二分查找,分治
- 分类讨论
思路
传统的二分查找在
转换问题
1. 将题目求中位数转换成:在合并的数组中,找到第k小的数。
假设合并后的数组大小为n,arr表示合并后的数组
那么:
枚举一下,就知道这个式子的正确性。
- 在合并后的数组中,中arr_1
不断缩小寻找区间
假设当前的寻找区间为
如果将这mid_1+mid_2个数字组合在一起
Code
class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int L[2], R[2], len[2]; int *arr[2]; int mid[2]; int mid_len[2]; int min_p, max_p; int dlt_len; double sum; len[0] = nums1.size(); len[1] = nums2.size(); arr[0] = new int[len[0] + 2]; arr[1] = new int[len[1] + 2]; for(int i = 1; i <= len[0]; i++) arr[0][i] = nums1[i-1]; for(int i = 1; i <= len[1]; i++) arr[1][i] = nums2[i-1]; mid_len[0] = (len[0] + len[1] + 1) >> 1; mid_len[1] = (len[0] + len[1] + 2) >> 1; if(!len[0] || !len[1]){ if(!(len[0]^len[1])) return 0.0; else return (arr[!len[0]][mid_len[0]] + arr[!len[0]][mid_len[1]] ) / 2.0; } L[0] = 0; R[0] = len[0]; L[1] = 0; R[1] = len[1]; arr[0][0] = arr[1][0] = min(arr[0][1], arr[1][1]); arr[0][len[0]+1] = arr[1][len[1]+1] = max(arr[0][len[0]], arr[1][len[1]]); while(true){ mid[0] = (L[0] + R[0]) >> 1; mid[1] = (L[1] + R[1]) >> 1; max_p = arr[1][mid[1]] >= arr[0][mid[0]]; min_p = !max_p; dlt_len = mid[0] + mid[1] - mid_len[0]; if(dlt_len == 0){ if(arr[min_p][mid[min_p]+1] >= arr[max_p][mid[max_p]]){ break; }else{ R[max_p] = mid[max_p] - 1; L[min_p] = mid[min_p] + 1; } }else if(dlt_len > 0){ R[max_p] = mid[max_p] - 1; }else{ // < 0 L[min_p] = mid[min_p]; min_p = !(arr[0][L[0] + 1] <= arr[1][L[1]+1]); L[min_p]++; } } sum = arr[max_p][mid[max_p]]; if(mid_len[0] != mid_len[1]){ sum += min(arr[0][mid[0]+1], arr[1][mid[1]+1]); sum /= 2; } return sum; }};
排名
0 0
- 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
- leetcode|4|Median of Two Sorted Arrays
- [Leetcode]4Median 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
- Leetcode[4] Median of Two Sorted Arrays
- LeetCode 4 - Median of Two Sorted Arrays
- leetcode 4 -- Median of Two Sorted Arrays
- Drupal安装百度编辑器Ueditor for wysiwyg
- OSX和IOS开发Shell命令整理
- MySQL导入sql文件及常用命令
- Windows Server 2012 如何部署trust domain?
- NOIP2011 观光公交 题解(超详细)
- LeetCode 4:Median of Two Sorted Arrays
- 上台阶
- Swift学习 常用基本数据类型
- Java拾遗-异常
- 【Android基础】-基于Apache HttpClient封装的网络操作工具类
- Django ajax
- Java性能优化(8):改写equals时总是要改写hashCode
- Regionals 2014 >> Latin America >> 6823 - Counting substhreengs
- 前端路上的各种问题-javascript—4