双指针解决链表的问题

1. 背景

双指针解决链表相关的问题,基本都是中等难度

  1. 删除链表的倒数第 N 个结点
  2. 旋转链表

2. 方案

leetcode 19

ini 复制代码
public ListNode removeNthFromEnd(ListNode head, int n){
    ListNode second = head;
    ListNode first = head;
    for (int i = 0; i < n; i++) {
        first = first.next;
    }
    if (first == null){
        return head.next;
    }
    while(first.next != null){
        first = first.next;
        second = second.next;
    }
    second.next = second.next.next;
    return head;

}

leetcode 61

ini 复制代码
public ListNode rotateRight(ListNode head, int k){
    if (head == null || head.next == null){
        return head;
    }
    ListNode temp = head;
    int lens = 1;
    while (temp.next != null){
        lens ++;
        temp = temp.next;
    }
    k = k % lens;
    ListNode first = head;
    ListNode second = head;
    int idx = 0;
    while(first.next != null){
        if (idx ++ < k){
            first = first.next;
        } else {
            first = first.next;
            second = second.next;
        }
    }
    first.next = head;
    head = second.next;
    second.next = null;
    return  head;
}
相关推荐
波波0071 小时前
ASP.NET MVC 中的返回类型全集详解
后端·asp.net·mvc
糟糕好吃6 小时前
我让 AI 操作网页之后,开始不想点按钮了
前端·javascript·后端
leonkay7 小时前
Golang语言闭包完全指南
开发语言·数据结构·后端·算法·架构·golang
颜酱8 小时前
BFS 与并查集实战总结:从基础框架到刷题落地
javascript·后端·算法
无限大68 小时前
数字生存02:如何在信息爆炸的时代保持清醒,不被算法控制
后端
无限大68 小时前
AI实战02:一个万能提示词模板,搞定90%的文案/设计/分析需求
前端·后端
青柠代码录9 小时前
【Linux】脚本:console.log 日志定期备份清理
后端
陈随易10 小时前
站在普通开发者的角度,我觉得 RollCode 更像是“把 H5 交付这件事重新捋顺了”
前端·后端·程序员
陈随易10 小时前
RollCode:不只是在做页面,而是在缩短“从需求到上线”的整条链路
前端·后端
y = xⁿ10 小时前
【LeetCodehot100】二叉树大合集 T94:二叉树的中序遍历 T104:二叉树的最大深度 T226:翻转二叉树 T101:对称二叉树
后端·算法·深度优先