链表中的节点每k个一组翻转

链表中的节点每k个一组翻转

http://www.nowcoder.com/questionTerminal/b49c3dc907814e9bbfa8437c251b028e

  1. 初始化头节点与尾节点

  2. 使用头插法将后续 K-1 个节点插入头节点与尾节点之间,使前 K 个节点倒转,然后更新头节点与尾节点。

  3. 循环上述步骤,直至尾部节点的 Next 指向 nil 或 插入的节点数小于 k-1,返回链表头节点。

  4. 1 对于插入节点小于 k-1,此时需要将逆转的节点进行还原,然后返回链表头节点。

    package main
    import . "nc_tools"
    func reverseKGroup( head *ListNode ,  k int ) *ListNode {
      // write code here
      if head == nil{
          return nil
      }
      root := &ListNode{Val: 0,Next: nil}
      root.Next = head
      tmproot := root 
      cur := head
      next := cur.Next    
      for{
          i:=1
          for ;i<k && next != nil;i++{
    
              cur.Next = next.Next     
              tmproot.Next,next.Next = next,tmproot.Next 
              next = cur.Next
    
          }
    
          if i==k{
              if cur.Next != nil{
                  tmproot = cur
                  cur = tmproot.Next
                  next = cur.Next   
              }else{
                  break
              }
    
          }else{
              for j:=1;j<i;j++{
                  t := tmproot.Next
                  tmproot.Next = tmproot.Next.Next
    
                  //t2 := cur.Next
                  cur.Next,t.Next = t,cur.Next
                  //t.Next = t2
    
              }
              break
          }
      }
      return root.Next    
    }
全部评论

相关推荐

Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家, 三家线下面试 第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了 第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试) 第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着 三家都是不超过50人的小公司 两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题 我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react查看图片
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务