LeetCode—链表反转

LeetCode—链表反转题目来源于 LeetCode 的第 206 题 难度为 easy 目前的通过率是 71 7 题目描述反转一个单链表

大家好,欢迎来到IT知识分享网。

题目来源于 LeetCode 的第 206 题,难度为:easy。目前的通过率是71.7%。

题目描述

反转一个单链表。

示例:

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

题目解析

设置三个节点precurnext

  • (1)每次查看cur节点是否为NULL,如果是,则结束循环,获得结果
  • (2)如果cur节点不是为NULL,则先设置临时变量nextcur的下一个节点
  • (3)让cur的下一个节点变成指向pre,而后pre移动curcur移动到next
  • (4)重复(1)(2)(3)

动画演示

LeetCode—链表反转

为了让动画看的简单易懂,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 递归编程技巧-链表算法题 来获得答案。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/163947.html

(0)
上一篇 2025-01-09 21:25
下一篇 2025-01-09 21:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信