复杂链表的复制

复杂链表的复制

http://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba

按顺序分两次复制,使用map存储clone的映射关系

  • 第一次,从头节点clone到尾节点,不复制random,并将原链表的地址与clone的新地址使用map映射
    tmp:=make(map[*RandomListNode]*RandomListNode)
      root := &RandomListNode{}
      h2 := root
      h1 := head
      for h1 != nil{
          h2.Next = &RandomListNode{h1.Label,nil,nil}
          tmp[h1] = h2.Next
          h2 = h2.Next
          h1 = h1.Next
      }
  • 第二次,从头节点clone到尾节点,复制random,从映射表中获取对应的clone地址,并赋值
    h2 = root.Next
      for head != nil{
          if head.Random != nil{
              h2.Random = tmp[head.Random]
    //             fmt.Println(tmp[head.Random].Label)
          }
          h2 = h2.Next
          head = head.Next
      }
全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务