本文主要是介绍《leetcode hot100》141. 环形链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路
1.哈希法
按链表顺序遍历,每次经过一个节点就标记当前节点是否存在,如果存在就表示有环(并非第一次到达),如果不在就将其标记为访问过,等待下一次回环的判断
2:快慢指针(很帅好吧)
Accode:
1:
/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* next = null;* }* }*/
public class Solution {public boolean hasCycle(ListNode head) {HashMap<ListNode, Integer> map = new HashMap<>();while (head!=null){if (map.containsKey(head))return true;map.put(head,1);head= head.next;}return false;
}
}
2:
public class Solution {public boolean hasCycle(ListNode head) {if (head == null || head.next == null) {return false;}ListNode slow = head;ListNode fast = head.next;while (slow != fast) {if (fast == null || fast.next == null) {return false;}slow = slow.next;fast = fast.next.next;}return true;}
}
over~
这篇关于《leetcode hot100》141. 环形链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!