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

手机详情页设计模板宁波seo排名优化方法

手机详情页设计模板,宁波seo排名优化方法,做公司官网需要多少钱,渝水区城乡建设局网站文章目录 题目与变形解法 题目与变形 字节一面中关于 K个一组链表反转 的题目变形。 K个一组链表反转。K个一组链表反转,链表尾不足K个的元素也需要反转。K个一组链表反转,但是从链表尾部开始反转。反转从位置 left 到位置 right 的链表节点 解法 四…

文章目录

  • 题目与变形
  • 解法

题目与变形

字节一面中关于 K个一组链表反转 的题目变形。

  • K个一组链表反转。
  • K个一组链表反转,链表尾不足K个的元素也需要反转。
  • K个一组链表反转,但是从链表尾部开始反转。
  • 反转从位置 left 到位置 right 的链表节点

解法

四个算法万变不离其宗,主要掌握原题即可。

public class No0025ReverseGroup2 {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6, 7, 8};int k = 3;No0025ReverseGroup2 demo = new No0025ReverseGroup2();ListNode node = ListNode.createListNode(array);System.out.println("原始节点: " + node);ListNode res = demo.reverseKGroup(node, k);System.out.println("K个一组反转: " + res);ListNode res2 = demo.reverseKGroup2(ListNode.createListNode(array), k);System.out.println("剩余不足也K个反转: " + res2);ListNode res3 = demo.reverseKGroup3(ListNode.createListNode(array), k);System.out.println("从尾部开始K个一组反转: " + res3);ListNode res4 = demo.reverseKGroup4(ListNode.createListNode(array), 3, 6);System.out.println("反转指定区域的链表: " + res4);}/*** 反转 left 到 right 位置的元素*/private ListNode reverseKGroup4(ListNode listNode, int begin, int stop) {ListNode result = new ListNode();result.next = listNode;ListNode left = result;ListNode right = result;for (int i = 0; i < stop; i++) {if (i < begin - 1) {// 保持 left.next 指向反转的起始节点left = left.next;}right = right.next;}while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}return result.next;}/*** 变形2,从链表尾部开始 k 个一组反转*/private ListNode reverseKGroup3(ListNode listNode, int k) {int count = 0;ListNode countNode = listNode;while (Objects.nonNull(countNode)) {countNode = countNode.next;count++;}ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;int beginIndex = count % 3;for (int i = 0; i < beginIndex; i++) {left = left.next;right = right.next;}while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {right = right.next;}if (Objects.isNull(right)) {break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}/*** 变形1,剩余元素不足K个也需要反转*/private ListNode reverseKGroup2(ListNode listNode, int k) {ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;ListNode preRight = right;while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {preRight = right;right = right.next;}if (Objects.isNull(right)) {// 处理剩余部分的反转ListNode curr = left.next;left.next = curr.next;curr.next = preRight.next;preRight.next = curr;break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}/*** 原题,K个一组反转*/private ListNode reverseKGroup(ListNode listNode, int k) {ListNode result = new ListNode(0);result.next = listNode;ListNode left = result;ListNode right = result;while (true) {for (int i = 0; i < k && Objects.nonNull(right); i++) {right = right.next;}if (Objects.isNull(right)) {break;}ListNode leftPtr = left.next;while (left.next != right) {// 理解这里就OK了ListNode curr = left.next;left.next = curr.next;curr.next = right.next;right.next = curr;}left = leftPtr;right = leftPtr;}return result.next;}
}
// 补充自用节点类
public class ListNode {public int val;public ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}public static ListNode createListNode(int[] array) {ListNode head = new ListNode(array[0]);ListNode node = head;for (int i = 1; i < array.length; i++) {ListNode next = new ListNode(array[i]);node.next = next;node = next;}return head;}
}
http://www.yayakq.cn/news/367730/

相关文章:

  • 做电子芯片的有那些交易网站简单的网站开发
  • 学网站维护wordpress会建站怎么找工作
  • 上海网站域名备案处学校网站建设栏目有哪些
  • 网站建设课程设计报告范文国际品牌的广州网站建设
  • 番禺建设局网站首页常熟做网站的
  • 商城网站建设要求seo工作室
  • 网站建设:化工App网站建设 高品质网站建设
  • 网站备案要求企业 个人软件开发与网站开发的区别
  • 个人网站免费制作平台东莞市网站建设分站公司
  • 网站开发与设计作业郑州seo优化阿亮
  • 自学网站搭建wordpress官方主题论坛
  • 做网站的毕设用什么软件1核做网站
  • 营销型企业网站怎么建站做网站需要些什么资料
  • 厦门 外贸商城网站网站功能定制
  • 站长工具高清吗自己创建公众号免费吗
  • 网站做好了怎样推广html网页模板制作
  • 网站 ip修改备案流程asp.net网站发布到虚拟主机
  • 国外可以做会员网站的网站个人网站制作的步骤
  • 网站建设 翻译营销型网站头部布局的元素
  • 西安网站群建设如何用域名做邮箱 网站
  • 济南企业建站公司启东做网站的网络公司有哪些
  • 湖南平台网站建设公司哈尔滨权威做网站
  • 沈阳做微网站的公司宁德市蕉城区建设局网站
  • 为什么网站显示建设中php网站开发计划
  • 做网站私活多少钱wordpress 输出the id
  • 六安电商网站建设价格wordpress插件手机
  • 图片在线制作网站网店营销网站
  • 丹阳网站建设价位app软件系统定制开发
  • win7如何做网站服务器酒吧营销用什么软件找客源
  • 江西seo网站排名优化上海企业网站建设公