###### tags: `leetcode`, `javascript`
# 【LeetCode】Javascript - #4 Median of Two Sorted Arrays
---
### 題目:
Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n)).
---
### 大概翻譯:
給定大小分別為m和n的兩個排序數組nums1和nums2,返回兩個排序數組的中值。
總體運行時複雜度應為O(log(m+n))。
---
例如:
```javascript=
Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.
Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
```
---
```javascript=
var findMedianSortedArrays = function(nums1, nums2) {
return median(nums1,nums2);
};
const median = (nums1, nums2) => {
const nums1Size = nums1.length;
const nums2Size = nums2.length;
// 先檢查給定數組中是否有一個為空,如果是,則返回另一個數組的中值
if(nums1Size === 0){
return nums2Size % 2 !== 0 ? nums2[nums2Size/2 - 0.5] : (nums2[nums2Size/2 - 1] + nums2[nums2Size/2]) / 2;
}
if(nums2Size === 0){
return nums1Size % 2 !== 0 ? nums1[nums1Size/2 - 0.5] : (nums1[nums1Size/2 - 1] + nums1[nums1Size/2]) / 2;
}
// 檢查兩個數組大小之和是否小於2
// 如果為true,檢查分佈並返回中值
if(nums1Size + nums2Size <= 2){
if(nums1Size && nums2Size){
return (nums1[0] + nums2[0]) / 2;
}
else{
return nums1Size > 0 ? nums1[0]: nums2[0] ;
}
}
// 如果上述規則都不成立,只需删除兩個組合數組的最高值和最低值,並使用生成的2個數組遞迴地再次調用該函數。
let nums1max = nums1[nums1Size-1];
let nums2max = nums2[nums2Size-1];
nums1[0] > nums2[0] ? nums2.shift() : nums1.shift();
nums1max > nums2max ? nums1.pop() : nums2.pop();
return median(nums1,nums2);
};
```
---
*新手工程師的筆記,純粹記錄學了些啥東西
如果有前輩高人讀了我的文,文中有任何錯誤再麻煩指教指教*