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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

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

  • 相关阅读:
    Mongo库表占用空间统计
    修改elasticsearch默认索引返回数
    针对docker中的mongo容器增加鉴权
    自动化测试框架STAF介绍
    单点登陆思想
    Django请求流程
    python冒泡排序,可对list中的字典进行排序
    python合并list中各个字典中相同条件的累计数
    哎,linux nginx命令就是记不住啊
    python利用urllib2读取webservice接口数据
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/15156658.html
Copyright © 2011-2022 走看看