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

网站开发倒计时南宁seo团队计划

网站开发倒计时,南宁seo团队计划,wordpress用户系统,最新国际军事新闻头条新闻基础知识要求#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.w-s-a.com/news/196582/

相关文章:

  • flash网站模板免费下载拍卖网站开发多少钱
  • 北京网站建设制作颍州网站建设
  • 网站制作报价表做网站上海公司
  • 简洁大气蓝色文章资讯网站百度搜索广告推广
  • 河南建设工程协会网站网站收银系统建设
  • 网站制作 服务企业网站案例展示
  • 咸宁网站建设wordpress手动降级
  • 昆明做网站建设怎么样做网站赚钱全攻略
  • 企业网站建设实战教程微信如何注册小程序
  • 做一件代发网站百度seo服务
  • 小说网站开发 公司可以做行程的网站
  • 古交市网站建设公司apk连接wordpress
  • 网页 网 址网站区别wordpress菜单居右
  • 网站建设搭建运营一台云服务器做多个网站
  • 用php做网站用什么框架推广网站推荐
  • 如何用二级域名做网站多用户网上商城
  • 河南省建设科技网站浅谈电子商务网站建设与规划
  • 网站空间需要续费青海网站建设推广
  • 网站开发本地环境企业网站建设排名口碑
  • 做新闻的网站怎样赚钱个人网站课程设计报告
  • 网站设计样例那个网站做图片好看
  • 小型公司网站建设深圳网络营销策划有限公司
  • 国内优秀企业网站做视频网站用什么系统
  • 网站建设入门pdfwordpress网站标题
  • 专业网站的定义网站运营的概念
  • 外贸服装网站建设网页美工设计说明书
  • 郑州专业做网站公百度翻译api wordpress
  • 做网站哪里找大学的一级或二级域名
  • 没有静态ip可以做网站服务器上饶网站制作需要多少钱
  • 网站建设wangzhii做国外网站做什么内容