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

算法通关村|黄金挑战|K个一组进行反转

K个一组进行反转

1.头插法

public ListNode reverseKGroup(ListNode head, int k) {ListNode dummyNode = new ListNode(0);dummyNode.next = head;ListNode cur = head;// 计算链表长度int len = 0;while (cur != null) {len++;cur = cur.next;}// 计算有几组int n = len / k;ListNode pre = dummyNode;cur = head;// 一共进行n次反转for (int i = 0; i < n; i++) {// 每次反转操作将cur移动k-1次for (int j = 0; j < k - 1; j++) {ListNode next = cur.next;cur.next = cur.next.next;next.next = pre.next;pre.next = next;}pre = cur;cur = cur.next;}return dummyNode.next;
}

2.穿针引线法

public ListNode reverseKGroup(ListNode head, int k) {ListNode dummyNode = new ListNode(0);dummyNode.next = head;ListNode pre = dummyNode;ListNode end = dummyNode;while (end.next != null) {// 找到每次处理的一段区间的末尾处,移动k次for (int i = 0; i < k && end != null; i++) {end = end.next;}if (end == null) {break;}ListNode start = pre.next;ListNode next = end.next;// 与后边的链表断开end.next = null;// 调用反转方法,将断开的这一段链表反转,并且和前边的链表相连接pre.next = reverse(start);// 现在start是这段链表的末尾处,将其与后边的链表相连接start.next = next;// 把pre和end指针移动到下一个区间的前一个位置pre = start;end = pre;}return dummyNode.next;
}// 反转实现
private ListNode reverse(ListNode head) {ListNode pre = null;ListNode curr = head;while (curr != null) {ListNode next = curr.next;curr.next = pre;pre = curr;curr = next;}return pre;
}

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤

http://www.lryc.cn/news/207039.html

相关文章:

  • 【Android Studio】工程中文件Annotate with Git Blame 不能点击
  • Ant Design Vue
  • ATA-P2010压电叠堆功率放大器-直流偏置对压电叠堆测试的重要性
  • 短视频矩阵系统搭建/源头----源码
  • 基于.Net CEF 实现 Vue 等前端技术栈构建 Windows 窗体应用
  • qt中怎么在鼠标停留的位置上显示该点的坐标位置
  • 两个list中实体某个属性值相同的实体和不同的实体
  • Linux下利用Docker快速部署Kafka
  • 竞赛 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类
  • jvm摘要
  • GZ035 5G组网与运维赛题第1套
  • MySQL数据xtrabackup物理备份方法
  • vue3 使用 elementUi: ./lib/theme-chalk/index.css is not exported from package
  • [ROS系列]ORB_SLAM3错误版本(仅记录)
  • APP盾的防御机制及应用场景
  • Unity性能优化一本通
  • Mysql,SqlServer,Oracle获取库名 表名 列名
  • errno变量和显示错误信息
  • Centos 7 安装 Docker Enginee
  • 通过js来实现用身份证号来判断性别和出生年月
  • 华为数通方向HCIP-DataCom H12-831题库(多选题:61-80)
  • 【T】03
  • VBA技术资料MF73:将Logo添加到页眉侧
  • 听GPT 讲Rust源代码--library/std(1)
  • Vue源码总结
  • 记一次调试微信订阅消息的坑
  • ASP.NET Core3.1 API 创建(Swagger配置、数据库连接Sql Server)、开发、部署
  • 大数据之LibrA数据库常见术语(八)
  • 【实战】Kubernetes安装持久化工具NFS-StorageClass
  • 透明安全地解释Moonbeam基金会分配的GLMR去了哪