做网站多少钱 优帮云,湛江大型网站模板建设,wordpress设置关键词设置,淘宝指数转换给你一个链表的头节点 head #xff0c;判断链表中是否有环。
如果链表中有某个节点#xff0c;可以通过连续跟踪 next 指针再次到达#xff0c;则链表中存在环。 为了表示给定链表中的环#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置#xff08;索…给你一个链表的头节点 head 判断链表中是否有环。
如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 则返回 true 。 否则返回 false 。
1.hash表方式
2.快慢指针一个指针每次移动2下 一个只移动一下 如果存在环一定会有相等的时候在环中一个指针相对另一个指针移动速度为1
package TOP21_30;import Util.ListNode;import java.util.HashSet;
import java.util.Set;// 环形链表
/*
给你一个链表的头节点 head 判断链表中是否有环。
如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 则返回 true 。 否则返回 false 。
*/
public class Top23 {//空间复杂度o(n)public static boolean hasCycle(ListNode head) {//hash表方式if(headnull){return false;}SetListNode nodeSet new HashSet();while (head!null){if(nodeSet.contains(head)){return true;}nodeSet.add(head);headhead.next;}return false;}// 快慢指针 一个指针每次移动2下 一个只移动一下 如果存在环一定会有相等的时候在环中一个指针相对另一个指针移动速度为1//空间复杂度o(1)public static boolean hasCycle2(ListNode head){if(head 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;}
}ListNode
package Util;public class ListNode {public int val;public ListNode next;public ListNode() {}public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}public static ListNode setNodes(int index,int[] nums){ListNode res new ListNode();res.val nums[index];if(index nums.length-1){res.next null;return res;}else{res.next setNodes(index1,nums);}return res;}public static void printListData(ListNode node){while (node!null){System.out.println(node.val);node node.next;}}
}harryptter / LeetcodeTop100 · GitCode