wordpress适合视频网站吗,做照片书网站好,国内wordpress主题免费,淘宝的网站建设怎么建链表组件 题目描述HashSet 模拟 题目描述 给定链表头结点 head#xff0c;该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums#xff0c;该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数#xff0c;这里对组件的定义为#xff1a;链表中一段… 链表组件 题目描述HashSet 模拟 题目描述 给定链表头结点 head该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数这里对组件的定义为链表中一段最长连续结点的值该值必须在列表 nums 中构成的集合。 示例1 输入: head [0,1,2,3], nums [0,1,3] 输出: 2 解释: 链表中,0 和 1 是相连接的且 nums 中不包含 2所以 [0, 1] 是 nums 的一个组件同理 [3] 也是一个组件故返回 2。 示例2 输入: head [0,1,2,3,4], nums [0,3,1,4] 输出: 2 解释: 链表中0 和 1 是相连接的3 和 4 是相连接的所以 [0, 1] 和 [3, 4] 是两个组件故返回 2。 提示 链表中节点数为n 1 n 10^4 0 Node.val n Node.val 中所有值 不同 1 nums.length n 0 nums[i] n nums 中所有值 不同 HashSet 模拟 根据题意进行模拟即可 : 为了方便判断某个node.val 是否存在于 nums 中我们先使用 Set 结构对所有的 nums[i] 进行转存随后每次检查连续段组件的个数。 代码演示
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public int numComponents(ListNode head, int[] nums) {SetIntegerset new HashSet();int count 0;//方便进行判断如果用数组判断那么每次都要循环这个优化很重要。for(int x : nums){set.add(x);}while(head ! null){if(set.contains(head.val)){while(head ! null set.contains(head.val)){head head.next;}count;}else{head head.next;}}return count;}
}