当前位置: 首页 > news >正文

Leetcode 160 Intersection of Two Linked Lists

题意

给定两个链表,找这两个链表第一个公共节点,如果没有返回nullptr

题目链接

https://leetcode.com/problems/intersection-of-two-linked-lists/description/

题解

两个指针分别从两个链表(记录为表A,表B)的表头出发,并且记录到表尾移动的步数,得到两个指针移动的步数之差 x x x。步数之差为正数,那么把表A的指针移动 x x x步,否则移动表B的指针 − x -x x步。然后两个指针移动到表尾,得到答案。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *p1 = headA;
        ListNode *p2 = headB;
        int cnt1 = 0;
        int cnt2 = 0;
        while(p1) {
            p1 = p1->next;
            cnt1++;
        }
        while(p2) {
            p2 = p2->next;
            cnt2++;
        }
        p1 = headA;
        p2 = headB;
        int cnt3 = abs(cnt1 - cnt2);
        if(cnt1 >= cnt2) {
            for(int i = 0; i < cnt3; i++) {
                p1 = p1->next;
            }
        } else {
            for(int i = 0; i < cnt3; i++) {
                p2 = p2->next;
            }            
        }
        while(p1 != p2 && p1 != nullptr) {
            p1 = p1->next;
            p2 = p2->next;
        }
        return p1 == nullptr ? nullptr : p1;
    }
};

算法复杂度: O ( m + n ) O(m+n) O(m+n) m m m n n n分别为两个表的长度
空间复杂度: O ( 1 ) O(1) O(1)

http://www.dtcms.com/a/76707.html

相关文章:

  • python+flask实现360全景图和stl等多种格式模型浏览
  • taro-vue2 如何使用国密加解密
  • stm32第六天继电器
  • CentOS配置永久静态IP
  • 3D点云目标检测——KITTI数据集读取与处理
  • 电脑管家如何清理内存及垃圾,提升电脑性能
  • 蓝桥杯数字接龙dfs
  • 【Linux】Linux系统上大文件的分割与合并
  • Linux中find 命令的高级用法 组合条件 与、或、非(-a、-o、!) 以及通过 -regex 和 -iregex 选项使用正则表达式
  • Android Vulkan 官宣转正并统一渲染堆栈 ,这对 Flutter 又有什么影响?
  • 【Python】11、函数-01
  • OpenCV图像处理:分割、合并、打码、组合与边界填充
  • VS Code + Git 分支操作指南(附流程图)
  • 基于Redis实现共享token登录
  • pytorch小记(十四):pytorch中 nn.Embedding 详解
  • 机器学习之梯度消失和梯度爆炸
  • 1.5.2 掌握Scala内建控制结构 - 块表达式
  • 【css酷炫效果】纯CSS实现虫洞穿越效果
  • Rust + WebAssembly 实现康威生命游戏
  • java 之枚举问题(超详细!!!!)
  • MySQL(索引)
  • 华为ISC+战略规划项目数字化转型驱动的智慧供应链革新(169页PPT)(文末有下载方式)
  • 架构师面试(十七):总体架构
  • numpy学习笔记4:np.arange(0, 10, 2) 的详细解释
  • 深度学习零碎知识
  • 【C语言】自定义类型:结构体
  • Android 15 获取网络切片信息的标准接口
  • 《C语言中的ASCII码表:解锁字符与数字的桥梁》
  • Netty基础—Netty实现消息推送服务
  • go语言中数组、map和切片的异同