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

Go语言每日一练 ——链表篇(三)

传送门

牛客面试笔试必刷101题 ---------------- 链表中的节点每k个一组翻转

题目以及解析

题目

在这里插入图片描述

解题代码及解析

package main
import _"fmt"
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param k int整型 
 * @return ListNode类
*/

func Getlength(head *ListNode) int{
    size:=0
    for i:=head;i!=nil;i=i.Next{
        size++
    }
    return size
}

func reverseKGroup( head *ListNode ,  k int ) *ListNode {
    if head==nil||head.Next==nil||k==1{
        return head
    }
    prev:=&ListNode{Next:head}
    curr:=head
    dump:=prev
    var next *ListNode
    size:=Getlength(head)
    for i:=0;i<size/k;i++{
        for j:=1;j<k;j++{
           next=curr.Next
           curr.Next=next.Next
           next.Next=prev.Next
           prev.Next=next
        }
        prev=curr
        curr=curr.Next
    }
    return dump.Next
}

解析:

这题依旧是一道链表反转的题目,只不过这次它指定了每个区间均要翻转链表为题目增添了难度,这里博主的思路主要是我们先统计链表的长度来判断究竟需要进行几次翻转,在编写每个区域链表翻转的代码,再次由于链表反转的方式不同,所以博主这里的链表三指针迭代法与之前不同,大家可以稍微研究一下,over!


http://www.kler.cn/a/229586.html

相关文章:

  • XGB-3: 模型IO
  • [UI5 常用控件] 06.Splitter,ResponsiveSplitter
  • node环境打包js,webpack和rollup两个打包工具打包,能支持vue
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实现异步任务示例
  • YOLOv8改进 | 检测头篇 | 独创RFAHead检测头超分辨率重构检测头(适用Pose、分割、目标检测)
  • 深度强化学习基础【1】-动态规划问题初探(leetcode算法的63题-不同路径II)
  • 题目:有1,2,3,4共四个数字,能组成多少个不相同而且无重复数字的三位数有多少个,都是多少?lua
  • 忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际
  • 【数据结构和算法】--- 基于c语言排序算法的实现(1)
  • Elasticsearch:基本 CRUD 操作 - Python
  • PyTorch和TensorFlow的简介
  • 画出TCP三次握手和四次挥手的示意图,并且总结TCP和UDP的区别
  • 数字孪生网络攻防模拟与城市安全演练
  • 使用PDFBox实现pdf转其他图片格式
  • JDWP 简介
  • 勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?
  • 商汤科技「日日新4.0」正式发布,多维度升级大模型体系,能力比肩GPT-4!
  • CentOS 中文乱码
  • Google Chrome Close AutoUpdate
  • 小程序:类型三级分类