首页 > 其他分享 >Q21 LeetCode02.07 链表相交

Q21 LeetCode02.07 链表相交

时间:2024-06-09 22:57:54浏览次数:14  
标签:LeetCode02.07 ListNode next 链表 Q21 curB curA null

1.求出两链表长度

2.分情况进行长链表头结点后移

3.移至相同长度,两头结点一起后移,找到公共节点

 

 1 public class Solution {
 2     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
 3       
 4         ListNode curA = headA;
 5         ListNode curB = headB;
 6         int lenA = 0, lenB = 0;
 7         while (curA != null) { // 求链表A的长度
 8             lenA++;
 9             curA = curA.next;
10         }
11         while (curB != null) { // 求链表B的长度
12             lenB++;
13             curB = curB.next;
14         }
15         curA = headA;
16         curB = headB;
17         if (lenB > lenA){
18             int gap = lenB - lenA;
19              while (gap-- > 0) {
20             curB = curB.next;
21              }
22              while (curB != null) {
23             if (curA == curB) {
24                 return curB;
25             }
26             curA = curA.next;
27             curB = curB.next;
28         }
29         
30 
31         }
32 
33          if (lenB <= lenA){
34             int gap = lenA - lenB;
35             while (gap-- > 0) {
36             curA = curA.next;
37             }
38             while (curA != null) {
39             if (curA == curB) {
40                 return curA;
41             }
42             curA = curA.next;
43             curB = curB.next;
44         }
45         
46 
47             
48         }
49          return null;
50     }
51 }

 

标签:LeetCode02.07,ListNode,next,链表,Q21,curB,curA,null
From: https://www.cnblogs.com/cff1/p/18240186

相关文章

  • Q20 LeetCode19 删除链表倒数第N个节点
    1.创建虚拟头结点ListNodepre=newListNode(0,head);2.创建快慢节点3.快节点fastIndex先往后移N个位置4.快慢slowIndex节点一直往后移,直至快节点到链表末尾5.删除慢节点后面的节点 1classSolution{2publicListNoderemoveNthFromEnd(ListNodehead,intn){......
  • 单链表相关面试算法题汇总
    技巧汇总快慢指针先找到中间节点如果要调用next..确保当前节点不为空。依次类推。.next不为空是否有环。走过的路。重新走。互相走。画图,分解,暴力法。用hashset插入法翻转。packagemainimport( "fmt" ."github.com/isdamir/gotype")funcAddLNode(h1,h2*L......
  • 链表--单链表
    引言:链表是一种常用的数据结构,在C语言中提供了一种灵活且高效的数据管理方式,它适用于那些需要频繁插入和删除操作的场景。链表的每个节点包含数据和指向下一个节点的指针,这种结构使得链表能够有效地利用内存,并且提供快速的插入和删除能力。然而,由于是动态分配的,访问链表中的元......
  • Q19 LeetCode24 两两交换链表节点
    1.注意节点交换顺序,以防节点丢失2.ListNodedummy=newListNode(0,head);定义空指针,并指向head节点 好语句3.还是虚拟头结点好用 1classSolution{2publicListNodeswapPairs(ListNodehead){3ListNodedummy=newListNode(0,head);4......
  • Q17 LeetCode707 设计链表
     无1classMyLinkedList{2intsize;3ListNodehead;45publicMyLinkedList(){6size=0;7head=newListNode(0);8}910publicintget(intindex){11if(index<0||index>=size)......
  • 代码随想录第4天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 0
    题目:24.两两交换链表中的节点思路:设置虚拟头结点,双指针+临时指针,(感觉也能递归,未尝试)时间复杂度:O(n)空间复杂度:O(1)坑:1.又忘了else{}和return2.试图访问空指针,多个条件的顺序问题及"&&""||"问题,cur->next要写在cur->next->next前面/***Definitionforsingly-linked......
  • Linux内核链表源代码
    /*SPDX-License-Identifier:GPL-2.0*/#ifndef_LINUX_LIST_H#define_LINUX_LIST_H#include<linux/types.h>#include<linux/stddef.h>#include<linux/poison.h>#include<linux/const.h>#include<linux/kernel.h>/**Simple......
  • AcWing 33:链表中倒数第k个节点 ← 尾插法
    【题目来源】https://www.acwing.com/problem/content/32/【题目描述】输入一个链表,输出该链表中倒数第k个结点。注意:  ●k>=1;  ●如果k大于链表长度,则返回NULL;【数据范围】链表长度[0,30]。【输入样例】输入:链表:1->2->3->4->5,k=2【输出样例】输出:4......
  • 链表-循环链表
    循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于最后一个元素指向下一个元素的指针(tail.next)不是引用undefined,而是指向第一个元素(head).单链表:this.tail.next=this.head;双向链表:this.tail.next=this.head;......
  • 代码随想录算法训练营第四天 Leetcode 24 两两交换链表节点 Leetcode19 删除链表倒数
    链表问题首先要记住设置虚拟头节点Leetcode24两两交换链表节点题目链接思路:就是简单模拟两两交换 要注意链表节点的处理一定要获取到合适的位置比如:这一题中两个交换节点的前一个节点注意链表保存临时节点/***Definitionforsingly-linkedlist.*publicclas......