leetcode双指针专题

Posted BHY_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode双指针专题相关的知识,希望对你有一定的参考价值。

本文持续更新leetcode上适用于双指针相关题目解法:

题目:4. 寻找两个有序数组的中位数

链接: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双指针专题的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode的双指针解法合集(python)

LeetCode的双指针解法合集(python)

Leetcode(双指针专题)

LeetCode日记——算法双指针专题

算法专题(02)双指针(01) 简单LeetCode 977

LeetCode JavaScript实现 回文链表(回文字符串) 题型汇总(双指针解法)