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

刚做的网站关键词就上来了一级消防工程师考试题库及答案

刚做的网站关键词就上来了,一级消防工程师考试题库及答案,创业网站平台排名,p2p网贷网站开发基础知识要求#xff1a; Java#xff1a;方法、while循环、for循环、if else语句 Python#xff1a; 方法、while循环、for循环、if else语句 题目#xff1a; 给你链表的头节点 head #xff0c;每 k 个节点一组进行翻转#xff0c;请你返回修改后的链表。 k 是一个…基础知识要求 Java方法、while循环、for循环、if else语句 Python 方法、while循环、for循环、if else语句 题目  给你链表的头节点 head 每 k 个节点一组进行翻转请你返回修改后的链表。 k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值而是需要实际进行节点交换。 示例 1 输入head [1,2,3,4,5], k 2 输出[2,1,4,3,5]示例 2 输入head [1,2,3,4,5], k 3 输出[3,2,1,4,5]提示 链表中的节点数目为 n1 k n 50000 Node.val 1000 思路解析 准备阶段 首先我们需要一个哑节点dummy node来简化头节点的处理。哑节点是一个不存储实际数据的节点它的next指针指向链表的头节点。这样我们就可以避免处理头节点翻转时的特殊情况。初始化三个指针prev前一个子链表的末尾节点、curr当前子链表的开始节点和end当前子链表的末尾节点。开始时prev指向哑节点curr指向头节点。循环处理阶段 在每次循环中我们首先使用getKthNode函数找到当前子链表的末尾节点end。如果end是null说明剩下的节点数不足k个我们不需要再翻转直接结束循环。如果end不是null说明当前子链表至少有k个节点可以进行翻转。在翻转之前我们需要保存下一个子链表的开始节点即end.next因为翻转后我们会丢失对它的引用。使用reverse函数翻转当前子链表。翻转后curr原来的开始节点会变为翻转后的末尾节点并且它的next指针会指向下一个子链表的开始节点。更新prev和curr的位置。prev指向curr翻转后的末尾节点curr指向下一个子链表的开始节点即之前保存的end.next。结束阶段 当循环结束后我们得到了一个每k个节点一组翻转后的链表。这个链表的头节点是哑节点的next指针所指向的节点。返回哑节点的next指针作为结果。 Java代码示例 public class ListNode { int val; ListNode next; ListNode(int x) { val x; } } public class Solution { public ListNode reverseKGroup(ListNode head, int k) { if (head null || k 1) { return head; } // 创建一个哑节点(dummy node)简化头节点处理 ListNode dummy new ListNode(0); dummy.next head; ListNode prev dummy; // 前一个子链表的末尾节点 ListNode curr head; // 当前子链表的开始节点 while (curr ! null) { // 计算当前子链表的末尾节点 ListNode end getKthNode(curr, k); if (end null) { // 不足k个节点无需翻转直接退出循环 break; } // 翻转当前子链表 ListNode nextGroup end.next; // 下一个子链表的开始节点 end.next null; // 切断当前子链表与后续链表的连接 prev.next reverse(curr); // 翻转后的子链表连接到前一个子链表的末尾 curr.next nextGroup; // 翻转后的子链表的末尾节点指向下一个子链表的开始节点 // 更新指针 prev curr; // 前一个子链表的末尾节点移动到当前翻转后的子链表的末尾 curr nextGroup; // 当前子链表的开始节点移动到下一个子链表的开始节点 } return dummy.next; // 返回修改后的链表头节点 } // 翻转链表 private ListNode reverse(ListNode head) { ListNode prev null; ListNode curr head; while (curr ! null) { ListNode next curr.next; curr.next prev; prev curr; curr next; } return prev; // 返回翻转后的头节点 } // 获取第k个节点 private ListNode getKthNode(ListNode head, int k) { ListNode curr head; for (int i 0; i k curr ! null; i) { curr curr.next; } return curr; } } Python代码示例 class ListNode: def __init__(self, val0, nextNone): self.val val self.next next class Solution: def reverseKGroup(self, head: ListNode, k: int) - ListNode: if not head or k 1: return head # 创建一个哑节点(dummy node)简化头节点处理 dummy ListNode(0) dummy.next head prev dummy # 前一个子链表的末尾节点 curr head # 当前子链表的开始节点 while curr: # 计算当前子链表的末尾节点 end self.getKthNode(curr, k) if not end: # 不足k个节点无需翻转直接退出循环 break # 翻转当前子链表 next_group end.next # 下一个子链表的开始节点 end.next None # 切断当前子链表与后续链表的连接 prev.next self.reverse(curr) # 翻转后的子链表连接到前一个子链表的末尾 curr.next next_group # 翻转后的子链表的末尾节点指向下一个子链表的开始节点 # 更新指针 prev curr # 前一个子链表的末尾节点移动到当前翻转后的子链表的末尾 curr next_group # 当前子链表的开始节点移动到下一个子链表的开始节点 return dummy.next # 返回修改后的链表头节点 # 翻转链表 def reverse(self, head: ListNode) - ListNode: prev None curr head while curr: next_node curr.next curr.next prev prev curr curr next_node return prev # 返回翻转后的头节点 # 获取第k个节点 def getKthNode(self, head: ListNode, k: int) - ListNode: curr head for _ in range(k): if curr: curr curr.next else: return None return curr
http://www.hkea.cn/news/14512737/

相关文章:

  • 南京俄语网站建设百度推广的渠道有哪些
  • 国内较好的网站设计公司广西网络电视
  • 做数学题的网站网络推广图片大全
  • 公司网站设计图公司网站如何上传图片
  • 商城网站续费要多少钱网站关键词百度排名在下降
  • 网站开发流程进度规划最新装修设计效果图大全
  • 阿里云服务器做网站好用吗天津网站建设信息科技有限公司
  • 昌邑做网站网站改版协议
  • 哪里可以做网站的wordpress如何添加前台登录
  • 重庆网站自己推广承德网站开发区地税
  • 遵义网站开发的公司有哪些网站你懂我意思正能量免费软件
  • 学做网站论坛 可以吗网站建设海淀区
  • wordpress外贸网站建站教程wordpress内核源码
  • 羊 东莞网站开发百度大全
  • 昆明建网站要多少钱购物网站图片的放大怎么做的
  • 设计网站需要用到哪些技术宁波网站营销推广制作
  • 网站设计深圳要联系方式吗?重庆平台网站建设企业
  • 资讯类响应式网站模板好看的html页面模板
  • 广东建设监理网站网站 验证码错误
  • 绍兴网站制作网站开发者密钥
  • 网站内部链接怎麽做微信h5制作小程序有哪些
  • 学习网页设计与制作的网站网站建设名片
  • 商务酒店网站建设做网站显示不同字体
  • 装饰行业网站建设做网站建设哪家公司好
  • 网站域名备案地址医院手机网站模板
  • 传奇合成版2合1雷霆版温州网站关键词排名优化
  • 工作室做网站网站开发的薪资是多少
  • 网站弹出信息怎么做的网推平台有哪些比较好
  • 制作网站软件都在什么公司qq空间登录
  • 关于网站建设相关文章表白网站源码大全