链表
zfpp25_
iOS
展开
-
单链表翻转
一、算法方案 p指向第一个有效节点,头指针headpointer的指针域为空,p逐个后移,并将p指向的当前元素以头插的方式插入到头指针 二、代码实现 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ int add_node_head(struct ListNode* head, struct ListNode*原创 2020-09-15 14:17:20 · 88 阅读 · 0 评论 -
单链表是否相交
方法一: 暴力法 对链表A中的每一个结点遍历,然后遍历整个链表B,并检查链表B中是否存在结点相同。 复杂度分析 时间复杂度 :(mn)(mn)。 空间复杂度 :O(1)O(1)。 方法二:哈希表法 遍历链表 A 并将每个结点的地址/引用存储在哈希表中。然后检查链表 B 中的每一个结点是否在哈希表中。若在,则为相交结点。 复杂度分析 时间复杂度 :O(m+n)O(m+n)。 空间复杂度 :O(m)O(m)或O(n)O(n)。 方法三:双指针法 创建两个指针pA和pB...原创 2020-09-15 14:03:57 · 165 阅读 · 0 评论 -
单向链表是否有环
一、算法方案 1、快慢双指针法,快指针一次走两步,慢指针一次走一步,如果有环必会相遇 2、集合法 二、代码实现 1、快慢双指针法 //swift实现 public class ListNode { public var val: Int public var next: ListNode? public init(_ val: Int) { self.val = val self.next = nil } } f原创 2020-09-15 13:24:12 · 189 阅读 · 0 评论