4-leetcode-Median of Two Sorted Arrays
来源:互联网 发布:美工废物利用教案 编辑:程序博客网 时间:2024/06/08 00:05
11/25/2017 leetcode website algorithm problem
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就是在两个排序的整形数组中找到中位数。
Feak Code
Initial
Judge two groups of vector<int>
nums1 is empty
nums2 is empty
nums1 and nums2 all empty
Process
need to consider three condition:
middle number exists in nums1 and nums2
middle number only exists in nums1
middle number only exists in nums2
Output
middle numbers maybe have two numbers middle_num[0] and middle_num[1]
Data Structure:
vector<int> middle_num(0), only need the last two numbers
下面给出C++代码:特别注意在使用数据做处理运算时必须注意数据类型带来的影响
class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { // store middle nums vector<int> store_middle_num(0); int nums1_index = 0; int nums2_index = 0; int nums_middle_left = 0; int nums_middle_right = 0; int nums_length = nums1.size()+nums2.size(); if(nums1.size() == 0 && nums2.size() == 0) return 0; if(nums1.size() == 0) return (nums2[nums2.size()/2.0]+nums2[(nums2.size()/2.0-0.5)])/2.0; if(nums2.size() == 0) return (nums1[nums1.size()/2.0]+nums1[(nums1.size()/2.0-0.5)])/2.0; if(nums_length%2 == 0){ nums_middle_left = nums_length/2-1; nums_middle_right = nums_length/2; }else{ nums_middle_left = nums_length/2; nums_middle_right = nums_length/2; } int i = 0; for(i = 0; i < nums_length; ++i){ if(nums1_index == nums1.size() || nums2_index == nums2.size()) break; if(nums1[nums1_index] < nums2[nums2_index]){ if(i == nums_middle_left || i == nums_middle_right){ store_middle_num.push_back(nums1[nums1_index]); } nums1_index++; }else{ if(i == nums_middle_left || i == nums_middle_right){ store_middle_num.push_back(nums2[nums2_index]); } nums2_index++; } } if(nums1_index == nums1.size()){ if(i <= nums_middle_left){ store_middle_num.push_back(nums2[nums_middle_left-nums1.size()]); store_middle_num.push_back(nums2[nums_middle_right-nums1.size()]); }else{ store_middle_num.push_back(nums2[nums_middle_right-nums1.size()]); } } if(nums2_index == nums2.size()){ if(i <= nums_middle_left){ store_middle_num.push_back(nums1[nums_middle_left-nums2.size()]); store_middle_num.push_back(nums1[nums_middle_right-nums2.size()]); }else{ store_middle_num.push_back(nums1[nums_middle_right-nums2.size()]); } } if(nums_middle_right == nums_middle_left) return store_middle_num[0]; return (double)(store_middle_num[0]+store_middle_num[1])/2; }};
阅读全文
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
- Makedown 基本语法及文档写作草案
- josephus问题的实现
- CF-219-D-Choosing Capital for Treeland
- Noip2017全面总结
- C++输入cin,cin.get(),cin.getline()详细比较及例子
- 4-leetcode-Median of Two Sorted Arrays
- delete加不加[]的区别
- ACM Computer Factory POJ
- c 位运算
- Eclipse常用快捷键大全
- 朝花夕拾之机房收费系统
- 【angular】指令及数据绑定入门
- 信安实践1:ubuntu16.04安装apache2,php5.6,mysql……
- 安卓 Recycleview的点击事件