LeetCode-4-Median of Two Sorted Arrays(C语言实现)
来源:互联网 发布:步步惊情39网络完整版 编辑:程序博客网 时间:2024/05/18 00:56
最基本的方法先按生序合并数组再查找;更好的方法是利用递归算法,如下记录。
两个有序数组a、b中找到第k小的数字:比较a[k/2-1]和b[k/2-1],即分别有k/2个数字比被比较的这两个数字更小,如果a[k/2-1]<b[k/2-1],则可以肯定a[k/2-1]比所有数中第k小的数还要小,从而可以把a数组中第一位到被该位全部剔除,再在新数组a'和b数组中递归查找第(k-k/2)小的数字。
注意:递归过程中k/2可能会大于某一数组的长度,要分类处理,规避数组越界。
关于边界处理:分两种情况,a或b数组有一个为空;a和b数组都非空且k为1。
double findKth(int* a,int len1, int* b,int len2, int k){
int mid1 = (k/2) < len1 ? (k/2) : len1;
int mid2 = (k/2) < len2 ? (k/2) : len2;
if(len1 == 0)
return b[k - 1];
if(len2 == 0)
return a[k - 1];
if(k == 1)
return a[0] < b[0] ? a[0] : b[0];
if(a[mid1 - 1] <= b[mid2 -1])
return findKth(a + mid1, len1 - mid1, b, len2, k - mid1);
else
return findKth(a, len1, b + mid2, len2 - mid2, k - mid2);
}
double findMedianSortedArrays(int* nums1,int nums1Size, int* nums2,int nums2Size) {
int k = nums1Size + nums2Size;
if(k % 2 ==1)
return findKth(nums1, nums1Size, nums2, nums2Size, k/2 +1);
else
return (findKth(nums1, nums1Size, nums2, nums2Size, k/2 +1) +
findKth(nums1, nums1Size, nums2, nums2Size, k/2)) /2.0;
}
- leetcode 4 Median of Two Sorted Arrays c语言实现
- LeetCode-4-Median of Two Sorted Arrays(C语言实现)
- leetcode Median of Two Sorted Arrays (C)
- [LeetCode]2 Median of Two Sorted Arrays (C++,Python实现)
- [leetcode-4]Median of Two Sorted Arrays(c)
- [LeetCode#4][C]Median of Two Sorted Arrays
- [LeetCode][4]Median of Two Sorted Arrays解析 -Java实现
- 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
- 11.14
- 《七点三刻》039期 再见金童!卡卡退役/第二架C919首飞成功/省考陆续启动…
- 11.24
- 多个linux设置ssh免密登陆和各个系统安装zookeeper
- 旧金山启用安保机器人巡逻街道引发争议
- LeetCode-4-Median of Two Sorted Arrays(C语言实现)
- PowerShell的使用
- 智能芯片创人:AI或助人类实现心灵感应交流
- 公共参数拦截器
- 人类离用真正的大脑进行人工智能研究还有多远?
- 循环
- 面向对象2-List list中的这个list到底是不是一个List
- 搜索展示,加入购物车,但不显示购物车页面
- git / git bash 下载与安装