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

力扣面试150题--K 个一组翻转链表

Day 35

题目描述

在这里插入图片描述

思路

做法:

  1. 找最后一个需要反转的元素
  2. 每个小组内进行反转
  3. 分为三类点
  4. 组内的第一个点,使用before记录这个点,用于其后面的节点指向前一个节点。移动到下一个节点。
  5. 组内不是第一个点也不是最后一个点的其余点,将该节点指向前一个节点,设置该节点为前一个节点,向后移动
  6. 组内最后一个点,先将这个点指向前一个节点,将这一组前的最后一个节点指向它,将该组的第一个元素下一个指向这个节点的下一个。记录本组最后一个元素以及下一组的第一个元素。
  7. 循环到最大的元素结束
/*** 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 fakehead = new ListNode();if(k==1){return head;}else{fakehead.next = head;//空头结点ListNode x=head;int i=1;while(x!=null){x=x.next;i++;}int len=i-1;//统计链表长度int max=(len/k)*k;//最后一个需要倒序的元素x=head;i=1;ListNode before=head;//指向前一个节点ListNode beg=fakehead;//指向上一组的最后一个元素while(i<=max){if(i%k==1){//小组中第一个元素before=x;x=x.next;i++;}else if(i%k!=1&&i%k!=0){//到小组中的元素ListNode xia=x.next;x.next=before;before=x;x=xia;i++;}else{//小组中最后一个元素ListNode xia=x.next;x.next=before;ListNode s=beg.next;beg.next=x;s.next=xia;beg=s;x=xia;i++;}}}return fakehead.next;  }
}

相关文章:

  • Linux0.11引导启动程序:简略过程
  • 深入蜂窝物联网 第三章 LTE-M(Cat-M1)详解:省电机制与移动特性
  • Spring系列六:JdbcTemplate
  • 【Rust通用集合类型】Rust向量Vector、String、HashMap原理解析与应用实战
  • case和字符串操作
  • Elastic Platform 8.18 和 9.0:ES|QL Lookup Joins 功能现已推出,Lucene 10!
  • 泰迪杯实战案例超深度解析:特殊医学用途配方食品数据分析与智能推荐系统设计
  • 零成本AI抠图终极指南:蓝耘元生代AIDC OS+ComfyUI实现商业级效果
  • 检查IBM MQ SSL配置是否成功
  • 比亚迪在智能化上,想再赢一次?
  • 从Flask到智能体:装饰器模式在AI系统中的架构迁移实践
  • 轻舟系列FPGA加速卡:大模型分布式训练中的高效协同者
  • 如何在idea中写spark程序
  • 【现代深度学习技术】循环神经网络07:通过时间反向传播
  • 什么是VR相机?VR相机的发展历史
  • Git技巧:Git Hook,自动触发,含实战分享
  • 绘制板块层级图
  • AI与机器人外科手术:如何用智能化技术提升手术精度与安全性?
  • docker镜像构建常用参数
  • 实战篇:在QEMU中编写和调试VHost/Virtio驱动
  • 纪念|海上金石学的兴盛与王昶《金石萃编》
  • 物业也能成为居家养老“服务员”,上海多区将开展“物业+养老”试点
  • 新版国家卫生监督抽查计划发布,首次明确打击网络“医托”
  • 李良生已任应急管理部党委委员、政治部主任
  • 民政部党组成员、中国老龄协会会长刘振国任民政部副部长
  • 小鹏机器人IRON亮相上海车展,何小鹏:相信更多人形机器人会现身车展