Swift – LeetCode – 链表组件
题目
链表组件
问题:
给定一个链表(链表结点包含一个整型值)的头结点 head。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必需在列表 G 中)构成的集合。
说明:
应当保持奇数节点和偶数节点的相对顺序。
链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。
示例:
示例 1:head: 0->1->2->3 G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3] 也是一个组件,故返回 2。示例 2:输入:head: 0->1->2->3->4G = [0, 3, 1, 4]输出: 2 解释: 链表中,0 和 1 是相连接的,3 和 4 是相连接的,所以 [0, 1] 和 [3, 4] 是两个组件,故返回 2。
解题思路:
用指针p表示当前链表结点,p一开始为head头结点,我们从G中挨个遍历,假如能找到,说明p的val在G中存在,这时,把p后移一个,即p=p->next,再在G(从G[0]到G[n-1])中找p的值,假如找到,同样进香行操作,直到在中找不到p->val为止。此时,组件的个数加1。
代码:
/**public class SingNode { public var value : Int public var nextNode: SingNode? public init(value:Int) { self.value = value }}extension SingNode : CustomStringConvertible { public var description: String { var string = "\(value)" var node = self.nextNode while node != nil { string = string + " -- " + "\(node!.value)" node = node?.nextNode } return string }} **/ func numComponents(_ l1:SingNode?,_ intArr:[Int]?) -> Int { if l1 == nil || intArr == nil { return 0 } var number = 0 var head = l1 var t = 0 while head != nil { if(intArr!.contains(head!.value)) { t += 1 if head?.nextNode == nil { number = number + 1 } } else { if t > 0 { number = number + 1 } t = 0 } head = head?.nextNode } return number }
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swift – LeetCode – 链表组件
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Swift – LeetCode – 链表组件