欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

算法与数据结构 - 链表常见操作

程序员文章站 2022-05-19 18:55:29
...

链表常见操作

              最近在复习算法与数据结构, 一边写写博客啦.

快指针和慢指针

public class Main {
    public static void main(String[] args) {
        printFastAndSlow(ListNode.createLinkedList(new int[]{1, 2, 3, 4, 5, 6, 7}));
    }

    private static void printFastAndSlow(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null && fast.next != null && slow != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        System.out.println("fast: " + (fast == null? "null":fast.val));
        System.out.println("slow: " + (slow == null? "null":fast.val));
    }
}

特性一:

快指针比慢指针来得快, 如果出现了环路, 可以迅速判断出来. 见leetcode题目: