首页 > 其他分享 >[Leetcode]找出链表公共结点

[Leetcode]找出链表公共结点

时间:2023-04-23 22:33:17浏览次数:45  
标签:结点 ListNode struct tailA next 链表 longList Leetcode tailB

力扣链接


[Leetcode]找出链表公共结点_链表

思路:

先求出两个链表的长度差

长链表先走差距步

同时走,第一个地址相同的是交点


代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {

    struct ListNode* tailA = headA,* tailB = headB;
    int lenA = 1, lenB = 1;
    while(tailA->next)
    {
        tailA = tailA->next;
        ++lenA; 
    }
    while(tailB->next)
    {
        tailB = tailB->next;
        ++lenB;
    }
    if(tailA != tailB)
    {
        return NULL;
    }

    int gap = abs(lenA - lenB);
    struct ListNode* longList = headA,* shortList = headB;
    if(lenA<lenB)
    {
        longList = headB;
        shortList = headA;
    }
    while(gap--)
    {
        longList= longList->next;
    }

    while(longList !=shortList)//比较的是地址
    {
        longList = longList->next;
        shortList = shortList->next;
    }
    return longList;

}

标签:结点,ListNode,struct,tailA,next,链表,longList,Leetcode,tailB
From: https://blog.51cto.com/u_15992140/6218844

相关文章

  • leetcode-217-存在重复元素 题解
    题目描述给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。示例1:输入:nums=[1,2,3,1]输出:true示例2:输入:nums=[1,2,3,4]输出:false示例3:输入:nums=[1,1,1,3,3,4,3,2,4,2]输出:true提......
  • 19删除链表的倒数第N个节点
    力扣刷题19.删除链表的倒数第N个节点--day4题目分析这道题目比较简单,熟练掌握单链表中删除节点的操作解法ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*dummyHead=newListNode();dummyHead->next=head;ListNode*p=head;int......
  • 24两两交换链表中的节点
    力扣刷题24.两两交换链表中的节点--day4题目分析还是那句话,需要先模拟一下节点交换的过程将整个过程细分为一个个小过程,以此类推下去注意画图分析设置三个指针postcurpre注意1.节点的交换过程2.指针的递推解法ListNode*swapPairs(ListNode*head){if(!......
  • ❗❗142环形链表II
    力扣刷题142.环形链表II--day4题目分析这道题目难度较大,特别是要求空间复杂度为O(1)的时候如果不追求空间复杂度的话,可以使用hash表把目前遍历的节点指针存入hash表,当下次在hash表中找到该节点时,即找到了答案空间复杂度为O(1)的解法:较为复杂,具有一定的数学分......
  • #yyds干货盘点# LeetCode程序员面试金典:在排序数组中查找元素的第一个和最后一个位置
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。 示例1:输入:nums=[5,7,7,8,8,10],target=......
  • #yyds干货盘点# LeetCode面试题:最大矩形
    1.简述:给定一个仅包含 0和1、大小为rowsxcols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。 示例1:输入:matrix=[["1","0","1","0","0"],["1","0","1","1","1"],["1","1&quo......
  • Leetcode 88. 合并两个有序数组 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.暴力法解题思路:由于题目要求原地合并,直接返回nums1数组。因此一个可行的方案是合并两个列表,然后对合并后的列表进行排序。用......
  • leetcode 262 行程和用戶
    行程和用戶 SELECTt.`request_at`AS`Day`,ROUND(SUM(IF(t.status='completed',0,1))/COUNT(t.status),2)AS`CancellationRate`FROMTripsAStLEFTJOINUsersu1ONu1.users_id=t.client_idLEFTJOINUsersu2ONu2.users_id=t.driver_idWHERE......
  • Leetcode 53. 最大子数组和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.动态规划解题思路:对于当前元素nums[i]来说,最大的连续子数组可以为:nums[0:i]中的最大连续子数组加上nums[i]nums[i],此时nums[......
  • Leetcode 1.两数之和 Python题解
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.暴力遍历法解题思路:遍历数组,对于当前的元素nums[i],如果result=taget-nums[i]在数组中,则返回这nums[i]和result的下标。如果已经查......