zoukankan      html  css  js  c++  java
  • LeetCode—链表反转

    题目来源于 LeetCode 的第 206 题,难度为:easy。目前的通过率是71.7%。
    题目描述
    反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL


    题目解析
    设置三个节点pre、cur、next

    (1)每次查看cur节点是否为NULL,如果是,则结束循环,获得结果

    (2)如果cur节点不是为NULL,则先设置临时变量next为cur的下一个节点

    (3)让cur的下一个节点变成指向pre,而后pre移动cur,cur移动到next

    (4)重复(1)(2)(3)

    动画演示

    为了让动画看的简单易懂,next 指针就没有画, next = cur?.next

     

    代码实现

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public var val: Int
     *     public var next: ListNode?
     *     public init() { self.val = 0; self.next = nil; }
     *     public init(_ val: Int) { self.val = val; self.next = nil; }
     *     public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
     * }
     */
    class Solution {
    func reverseList(_ head: ListNode?) -> ListNode? {
    var cur = head
    var next = cur?.next
    var pre : ListNode?
    while (cur != nil) {
                next = cur?.next
                cur?.next = pre
                pre = cur
                cur = next
            }
    return pre
        }
    }

    进阶解法:递归实现
    可以查看前期分享的文章 leetcode 递归编程技巧-链表算法题 来获得答案。

    欢迎关注【无量测试之道】公众号,回复【领取资源】
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、
    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

    添加关注,让我们一起共同成长! ​​​​​​​

  • 相关阅读:
    使用 asp.net mvc和 jQuery UI 控件包
    ServiceStack.Redis 使用教程
    HTC T8878刷机手册
    Entity Framework CodeFirst 文章汇集
    2011年Mono发展历程
    日志管理实用程序LogExpert
    使用 NuGet 管理项目库
    WCF 4.0路由服务Routing Service
    精进不休 .NET 4.0 (1) asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
    精进不休 .NET 4.0 (7) ADO.NET Entity Framework 4.0 新特性
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/15156658.html
Copyright © 2011-2022 走看看