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

day16 leetcode-hot100-31(链表10)

25. K 个一组翻转链表 - 力扣(LeetCode)

1.模拟法

思路

将这个过程拆解为两个步骤,第一步将单分组的节点反转,第二步将反转后的链表加入原链表。

针对节点反转很容易,参考之前的206. 反转链表 - 力扣(LeetCode)

针对反转后的链表加入原链表,我们需要该链表前一个节点pre,以及后面一个节点nex。

所以我们要提前将pre与nex存储起来。

具体步骤

(1)创建哨兵节点dump,让头节点不再特殊。同时pre=dump为第一个需要反转链表的前一个节点。

(2)判断需要反转的链表是否有k个长度,若有则继续,若无直接输出结果dump.next;

(3)存储nex,pre,方便后续加入原链表。

(4)反转链表(返回新的头节点与尾节点),并将链表加入原链表。

(5)更新pre为tail,head为tail.next,方便下一次循环。

具体代码
/*** 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 reverseKGroup(ListNode head, int k) {ListNode dump = new ListNode(0,head);ListNode pre = dump;while(head!=null){ListNode tail = pre;for(int i=0;i<k;i++){tail=tail.next;if(tail==null){return dump.next;}}ListNode nex = tail.next;ListNode[] rev = myRev(head,tail);head = rev[0];tail = rev[1];pre.next = head;tail.next=nex;pre=tail;head = tail.next;}return dump.next;}public ListNode[] myRev(ListNode n1,ListNode n2){ListNode pre1 = n2.next;ListNode end = pre1;ListNode cur = n1;while(cur!=end){ListNode next1 =cur.next;cur.next=pre1;pre1=cur;cur=next1;}ListNode[] r = {n2,n1};return r;}
}

http://www.xdnf.cn/news/10342.html

相关文章:

  • DAY40 训练和测试
  • Vue 核心技术与实战智慧商城项目Day08-10
  • 麦克风和电脑内播放声音实时识别转文字软件FunASR整合包V5下载
  • 关于langchain使用API加载model的方式
  • Java并发编程实战 Day 3:volatile关键字与内存可见性
  • C++学习-入门到精通【12】文件处理
  • 工作流引擎-09-XState 是一个 JavaScript 和 TypeScript 的状态管理库,它使用状态机和状态图来建模逻辑。
  • Hilbert曲线
  • 在Flutter中定义全局对象(如$http)而不需要import
  • vue3: baidusubway using typescript
  • MYOJ_4149:(洛谷P1002)[NOIP 2002 普及组] 过河卒(坐标型DP)
  • 在Mathematica中可视化Root和Log函数
  • 实现RabbitMQ多节点集群搭建
  • 前端框架进化史
  • Git仓库大文件清理指南
  • LangChain-结合GLM+SQL+函数调用实现数据库查询(二)
  • Spring如何实现组件扫描与@Component注解原理
  • vscode 连接远程服务器
  • Json详解
  • Spring Boot,注解,@RestController
  • <5>, Qt系统相关
  • 哈 希 表
  • 快速掌握 GO 之 RabbitMQ 结合 gin+gorm 案例
  • 设计模式——策略设计模式(行为型)
  • GitLab CI、GitHub Actions和Jenkins进行比较
  • DAY 18 推断聚类后簇的类型
  • 核心机制:TCP 断开连接(四次挥手)
  • learn react course
  • TDengine 集群容错与灾备
  • 多自主水下航行器(AUV)协同围捕策略