博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-160 Intersection of Two Linked Lists
阅读量:4973 次
发布时间:2019-06-12

本文共 1318 字,大约阅读时间需要 4 分钟。

Write a program to find the node at which the intersection of two singly linked lists begins.

For example, the following two linked lists:

A:          a1 → a2                   ↘                     c1 → c2 → c3                   ↗            B:     b1 → b2 → b3

begin to intersect at node c1.

Notes:

  • If the two linked lists have no intersection at all, return null.
  • The linked lists must retain their original structure after the function returns.
  • You may assume there are no cycles anywhere in the entire linked structure.
  • Your code should preferably run in O(n) time and use only O(1) memory.

想法:逐个判断,如果p1==p2,那么返回其中一个即可,如果在比较的过程中,一个链表达到尾端,那么将其移动到另外一个链表到的位置,重新开始比较。即加入headB到达节点p2,链表headA到了终点,那么将headA移动到p2,重新开始比较。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {    if(headA == NULL || headB == NULL){        return NULL;    }    struct ListNode* p1 = headA;    struct ListNode* p2 = headB;    while(p1 != NULL && p2!= NULL && p1 != p2){        p1 = p1->next;        p2 = p2->next;                if(p1 == p2) return p1;        if (p1 == NULL) p1 = headB;        if (p2 == NULL) p2 = headA;    }    return p1;}

转载于:https://www.cnblogs.com/tingweichen/p/9870022.html

你可能感兴趣的文章
PL/SQL Developer 查询的数据有乱码或者where 字段名=字段值 查不出来数据
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
JavaWeb之JSON
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
windows平台上编译mongdb-cxx-driver
查看>>
optionMenu-普通菜单使用
查看>>
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
执行了的程序,才是你的程序.
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>