leetcode双指针专题
Posted BHY_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode双指针专题相关的知识,希望对你有一定的参考价值。
本文持续更新leetcode上适用于双指针相关题目解法:
链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
解析:通过2个下标来依次比较2个数组的元素,直到走过的数量达到一半,复杂度(m+n)/2
答案:
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size)
//printf("num1size:%d, num2size:%d\\n", nums1Size, nums2Size);
int last; // 上一个记录的位置
int now; // 当前最新的位置
int index1 = 0;
int index2 = 0;
int count = 0;
int sum = nums1Size + nums2Size;
// 针对2个数组都非空
while (count < (sum / 2 + 1) && nums1Size != 0 && nums2Size != 0)
if (nums1[index1] < nums2[index2])
//printf("index1 %d, %d\\n", index1, nums1[index1]);
last = now;
now = nums1[index1];
index1++;
if (index1 == nums1Size)
//printf("while1 break 1\\n");
count++;
break;
else
//printf("index2 %d, %d\\n", index2, nums2[index2]);
last = now;
now = nums2[index2];
index2++;
if (index2 == nums2Size)
//printf("while1 break 2\\n");
count++;
break;
count++;
// 针对存在空数组情况
while (count < (sum / 2 + 1))
if (index1 == nums1Size)
//printf("++index2 %d\\n", nums2[index2]);
last = now;
now = nums2[index2];
index2++;
else
//printf("++index1 %d\\n", nums1[index1]);
last = now;
now = nums1[index1];
index1++;
count++;
//printf("while2: %d\\n", count);
double res;
if (sum % 2 == 0)
res = (now + last) * 0.5;
else
res = now;
return res;
结果:
执行结果:通过
执行用时 :12 ms, 在所有 C 提交中击败了97.14%的用户
内存消耗 :5.9 MB, 在所有 C 提交中击败了100.00%的用户
以上是关于leetcode双指针专题的主要内容,如果未能解决你的问题,请参考以下文章