LeetCode 817
Linked List Components
Problem Description:
题目给出一条链表和一个数组,遍历链表和数组,如果链表的一个子串的值在数组中都能找到,则算一个块,最后返回链表中的块数。具体的题目信息:
https://leetcode.com/problems/linked-list-components/description/Solution:
- 解题思路:开辟一个足够大的数组
map存储G数组的值,令map[G[i]] = G[i],每访问一个链表结点可以直接根据map中的值判断是否属于G数组,不需要反复遍历。 - 编程实现:
- 解题思路:开辟一个足够大的数组
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int numComponents(ListNode* head, vector<int>& G) {
int map[10000];
int count = 0, flag = 0;
for (int i = 0; i < 10000; i++) {
map[i] = -1;
}
for (int j = 0; j < G.size(); j++) {
map[G[j]] = G[j];
}
ListNode* p = head;
while(p) {
if (map[p->val] != -1) {
flag = 1;
if (p->next == NULL)
count++;
} else {
if (flag == 1) {
count++;
flag = 0;
}
}
p = p->next;
}
return count;
}
};
本文详细探讨了LeetCode的第817题——链表组件问题。通过提供解题思路和编程实现,阐述了解决这类链表问题的方法,即利用数组辅助判断链表节点归属。

309

被折叠的 条评论
为什么被折叠?



