• go 刷算法第一题——反转链表


    一步一个脚印,弄懂吸收了,才是自己的知识

    题目

    输入:{1,2,3}
    返回值:{3,2,1}

    package main
    
    type ListNode struct {
        Val  int
        Next *ListNode
    }
    
    func ReverseList(pHead *ListNode) *ListNode {
        // write code here
    }
    
    

    写法一:简单反转

    func ReverseList(pHead *ListNode) *ListNode {
        // write code here
        if pHead == nil || pHead.Next == nil {
            return pHead
        }
        var newHead *ListNode
        for pHead != nil {
            // 保存下一节点值
            pNext := pHead.Next
    
            // 反转节点赋值
            // 当前元节点下一节点设值为反转节点
            pHead.Next = newHead
            // 反转节点等于当前元节点
            newHead = pHead
    
            // 下一节点作为下一次判断元节点
            pHead = pNext
        }
        return newHead
    }
    

    写法二:反转+Go平行赋值

    func ReverseList( pHead *ListNode ) *ListNode {
        if pHead == nil || pHead.Next == nil{
            return pHead
        }
        var newHead *ListNode
        for pHead != nil {
            pHead, pHead.Next, newHead = pHead.Next, newHead, pHead
        }
        return newHead
    }
    

    写法三:递归

    func ReverseList(head *ListNode) *ListNode {
        // write code here
        if head == nil || head.Next == nil {
            return head
        }
    
        res := ReverseList(head.Next)
    
        head.Next.Next = head
        head.Next = nil
    
        return res
    }
    
  • 相关阅读:
    案例十:shell编写nginx服务启动程序
    Linux在实际中的应用
    案例九:shell脚本自动创建多个新用户,并设置密码
    数据架构的演变
    第一个Struts2程序
    关于eclipse导入Tomact报404的问题
    单选框 RadioButton
    EditText编辑框
    Button控件的三种点击事件
    1319: 同构词
  • 原文地址:https://www.cnblogs.com/jiangdewen/p/15386510.html
Copyright © 2020-2023  润新知