双指针解决链表的问题

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;
}
相关推荐
Ting-yu2 分钟前
Spring AI Alibaba零基础速成(5) ---- Memory(记忆)
java·人工智能·后端·spring
月落归舟4 分钟前
一文掌握Spring AOP:从入门到底层原理
java·后端·spring
QuZhengRong7 分钟前
【Luck-Report】缓存
java·前端·后端·vue·excel
XiYang-DING19 分钟前
【Spring】SpringMVC
java·后端·spring
想学习java初学者20 分钟前
SpringBoot整合GS1编码解码
java·spring boot·后端
日月云棠21 分钟前
2 快速入门实战指南
java·后端
日月云棠22 分钟前
3 Dubbo 2.7 高级配置:检查控制、版本策略与协议选择
java·后端
日月云棠31 分钟前
1 分布式架构演进与Dubbo框架入门
java·后端
彩票管理中心秘书长32 分钟前
智能体状态指示:何时思考、何时调用工具、何时出错
前端·后端·程序员
彩票管理中心秘书长32 分钟前
React + TypeScript拆解一整套“AI 变现代码流程”
前端·后端·程序员