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

力扣--链表

 相交链表

法一:

把A链表的节点都存HashSet里,遍历B链表找相同的节点 

法二:

把A、B指针都移到末尾,再同时往回走,每次往回走都比较 当前节点的下一节点(a.next == b.next ?)是否相同,当不相同时当前节点就是相交节点

法三(官方):

只有当链表 headA 和 headB 都不为空时,两个链表才可能相交。因此首先判断链表 headA 和 headB 是否为空,如果其中至少有一个链表为空,则两个链表一定不相交,返回 null。

遍历移动两链表的指针pA,pB

如果指针 pA 走到头了,则将指针 pA 移到链表 headB 的头节点;如果指针 pB 走到头了,则将指针 pB 移到链表 headA 的头节点。

继续遍历

直到两指针指向同一节点,这个点就是相交节点

旋转链表

 

法一

 只需要实现最后的节点移到最前面,再重复这个操作k%length即可

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {// 只需要实现最后的节点移到最前面,再重复这个操作k%length即可if (head == null || head.next == null) {//没有节点或者只有一个节点return head;}// 统计链表总长度int count = 0;ListNode t = head;while(t != null) {count++;t = t.next;}t = head;for(int i = 0; i < k%count; i++) {t = oneSwap(t,k);}return t;}public ListNode oneSwap(ListNode head, int k) {ListNode newHead = new ListNode(-1,head);// 只需要实现最后的节点移到最前面即可ListNode pre = head;ListNode curr = head.next;while(curr.next != null) {pre = pre.next;curr = curr.next;}curr.next = newHead.next;newHead.next = curr;pre.next = null;return newHead.next;}}

法二 

前面说了,重复修改链表的操作k%length,所以直接看图。

结果链表是将倒数k%length个节点一起提到最前面

所以找到倒数k%length个节点的头节点和尾节点连到最前面即可(记得将头节点的pre.next = null)

或者是让链表首尾连接成环后切断倒数k%length处的连接


http://www.mrgr.cn/news/90137.html

相关文章:

  • 二、通义灵码插件保姆级教学-IDEA(使用篇)
  • 在 Visual Studio Code 与微信开发者工具中调试使用 emscripten 基于 C 生成的 WASM 代码
  • 如何使用DeepSeek-R1进行二次处理?
  • 基于SpringBoot的线上历史馆藏管理系统
  • Jupyter Notebook自动保存失败等问题的解决
  • 大学资产管理系统中的下载功能设计与实现
  • leetcode 做题思路快查
  • 大语言模型RAG,transformer
  • 【C++】命名空间
  • SqlSugar简单使用之Nuget包封装-Easy.SqlSugar.Core
  • 六、OSG学习笔记-漫游(操作器)
  • windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)
  • git submodule使用
  • 【RabbitMQ】RabbitMQ的下载安装及使用
  • 【Vue】在Vue3中使用Echarts的示例 两种方法
  • 律所录音证据归集工具:基于PyQt6与多线程的自动化音频管理解决方案
  • 【DeepSeek】DeepSeek概述 | 本地部署deepseek
  • c语言——网络编程【多路文件IO实现 poll、epoll模型总结】内附代码
  • 大语言模型RAG,transformer和mamba
  • 使用LLaMA Factory踩坑记录
  • SQL自学,mysql从入门到精通 --- 第 7 天,表的联合
  • 机器学习 - 线性回归(最大后验估计)
  • WEB小项目——鼠标划入丝滑显示下划线
  • Wpf美化按钮,输入框,下拉框,dataGrid
  • SpringBoot3 + Jedis5 + Redis集群 如何通过scan方法分页获取所有keys
  • zy.21