zoukankan      html  css  js  c++  java
  • K个一组反转链表(golang)

    //leetcode submit region begin(Prohibit modification and deletion)
    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func reverseKGroup(head *ListNode, k int) *ListNode {
        
        length:=0
        pre:=head
        //计算链表长度
        for pre!=nil{
            length++
            pre = pre.Next
        }
        
        //k个一组的次数
        time:=length/k
        dummy:=new(ListNode)
        dummy.Next = head
        pre = dummy    //每一组前面的数,头插法,每次都把move放在pre后面
        var nexthead,move *ListNode
        for i:=0;i<time;i++{
            nexthead = pre.Next    //每个k长度的开头,逐渐变为末尾
            move = nexthead.Next//第二个,不断向后移动,把move插入到pre后面,
            for j:=0;j<k-1;j++{
                nexthead.Next = move.Next
                move.Next = pre.Next
                pre.Next = move
                move = nexthead.Next
            }
            //经过头插法,nexthead逐渐变为结尾,结束一轮循环时,nexthead变为结尾,是下一个k长度的pre,
            pre = nexthead  //下一个k同样的方式,头插法放pre后面
            
        }
        return dummy.Next
    }

    迭代法,还有递归法,

    2.反转从m到n位置的链表 

    还是头插法,找到m前面一个节点,后面的都放在pre之后,

    func reverseBetween(head *ListNode, m int, n int) *ListNode {
        if head==nil{
            return head
        }
    
        dummy:=new(ListNode)
        dummy.Next = head
        pre:=dummy
        //先找到m前面的节点
        for i:=0;i<m-1;i++{
            pre = pre.Next
        }
    
        var nexthead,move *ListNode
        nexthead = pre.Next
        move = nexthead.Next
    
        //头插法,反转n-m次
        for j:=0;j<n-m;j++{
            nexthead.Next = move.Next
            move.Next = pre.Next
            pre.Next = move
            move = nexthead.Next
        }
        return dummy.Next
    }
  • 相关阅读:
    python+requests+re匹配抓取猫眼上映电影信息
    Qt 5.12 LTS 部署
    Apache 日志记录相关设置
    php curl 相关知识
    Apache缓存相关配置
    Apache开启GZIP 压缩网页
    Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}
    Andriod you must restart adb and eclipse
    JDK 环境变量的配置
    http 协议详解
  • 原文地址:https://www.cnblogs.com/9527s/p/14212250.html
Copyright © 2011-2022 走看看