【LeetCode 4】 Median Of Sorted Array
来源:互联网 发布:游族网络最新消息 编辑:程序博客网 时间:2024/06/11 18:45
/**************************LeetCode 4 Median Of Sorted Array************************//*****************************思想:1.定义两个指针索引 pointer1=0,pointer2=0 分别指向nums1 nums2 的首个元素2.数组长度和为偶数时 中位数取一个数 第(len1+len2)/2个数数组长度为奇数时 中位数取两个数 第count个和第count+1个数的平均值3.比较pointer1 和 pointer2 指向的元素的大小,小的向后移动nums1[pointer1]>nums2[pointer2] 则 pointer2++;nums1[pointer1]<=nums2[pointer2] 则 pointer1++;4.计数器count++,比较count是否等于(len1+len2)/25.在比较过程中 注意判断 pointer1 和pointer2 是否到数组的末尾,处理越界问题 时间复杂度:O((m+n)/2) m,n分别是数组长度空间复杂度 O(1)各种越界处理 满屏幕都是 if....else.... 其实很简单*************************/double findMedianSortedArrays(vector<int> &nums1, vector<int> &nums2){if (nums1.size()<1 && nums2.size()<1){return 0;}int pointer1 = 0;int pointer2 = 0;int median = (nums1.size() + nums2.size() - 1) / 2;int count = 0;int move = 1; //指示哪个指针在移动 1 pointer1在移动 2 pointer2在移动 while (pointer1<nums1.size() && pointer2<nums2.size() && count<median){if (nums1[pointer1]>nums2[pointer2]){++pointer2;move = 2;}else{++pointer1;move = 1;}count++;}//分别判断结束的条件if (pointer1<nums1.size() && pointer2<nums2.size()){//说明count==medianif ((nums1.size() + nums2.size()) % 2)//长度和为奇数,取1个数{if (move == 1) //上一次移动是 1{return nums1[pointer1];}else //上一次移动是 2{return nums2[pointer2];}}else//长度和为偶数,取两个数{ if (move == 1) //上一次移动是 1{return (nums1[pointer1] + ((pointer1 + 1) >= nums1.size() || (nums1[pointer1 + 1] > nums2[pointer2]) ? nums2[pointer2] : nums1[pointer1 + 1])) / 2.0;//注意越界处理 }else //上一次移动是 2{return (nums2[pointer2] + (((pointer2 + 1) >= nums2.size()) || (nums2[pointer2 + 1] > nums1[pointer1]) ? nums1[pointer1] : nums2[pointer2 + 1])) / 2.0;}}}else{if (pointer1<nums1.size()) //说明数组2到末尾{while (count<median){++pointer1;}if ((nums1.size() + nums2.size()) % 2)//长度和为奇数,取1个数{return nums1[pointer1];}else{return (nums1[pointer1] + nums1[pointer1 + 1]) / 2.0;}}else //说明数组1到末尾{while (count < median){++pointer2;}if ((nums1.size() + nums2.size()) % 2)//长度和为奇数,取1个数{return nums2[pointer2];}else{return (nums2[pointer2] + nums2[pointer2 + 1]) / 2.0;}} }}
0 0
- LeetCode 4: Median Of Two Sorted Array
- [leetcode] #4 Median of Two Sorted Array
- 【LeetCode 4】 Median Of Sorted Array
- LeetCode-Median of sorted array
- Leetcode - Median of Two Sorted Array
- Median of Two Sorted Array---LeetCode
- LeetCode:Median of two sorted array
- Leetcode--Median of Two Sorted Array
- [Leetcode]Median of two sorted array
- LeetCode-Median of sorted array(2)
- [LeetCode]Median of Two Sorted Array
- Median of Two Sorted Array leetcode java
- Median of Two Sorted Array leetcode java
- leetcode.array--4. Median of Two Sorted Arrays
- Median of Two Sorted Array
- Median of two sorted array
- median of two sorted array
- median of two sorted array
- socket通信的遇到的问题1
- Codeforces Round #257 (Div. 1) C. Jzzhu and Apples(构造题,想法题,好题)
- 图论之拓扑排序
- HttpURLConnection用法详解
- 特殊排序
- 【LeetCode 4】 Median Of Sorted Array
- codevs 4175 二分+spfa判断
- Android 实现闹钟以及通知
- Pandas 数据处理,数据清洗
- Android 实现拍照功能
- C/C++代码实现最大子数组
- 论文阅读:Automatic Detection and Classication of Teeth in CT Data
- (2)防火墙的基本配置---1安全域和端口
- js 如何实现sum(2,3)===sum(2)(3);