[链表]leetcode817:链表组件(medium)

题目:

817. 链表组件

题解:

  • 首先先喷题目,题目意思都没说清楚,链表中一段最长连续结点的值这句话到底是啥意思呢?
  • 自己做了第一遍后,发现过不了,然后检查代码也没有发现异常,后来看了评论区才明白题目的意思,所以本题只要懂了题目意思就能马上得解了。
  • 题目大意:如果当前的节点在列表G中,并且下一个节点不在列表G中,我们就找到了一个组件的尾节点,将res加1

代码如下:

class Solution {
public:
    //题目意思:如果当前的节点在列表G中,并且下一个节点不在列表G中,我们就找到了一个组件的尾节点,将res加1
    int numComponents(ListNode* head, vector<int>& G) {
        set<int> record;
        for(int& g:G)record.insert(g);
        int res=0;
        ListNode *cur=head;
        while(cur)
        {   
            //cur在G中,逻辑或先检查前一个是否为真,前一个为真直接返回true,前一个为假在检查后一个是否为真
            //所以先判断cur的next是否空,为空则res++;若不为空,在判断cur的next是否在G中即可
            if(record.count(cur->val)&&(!cur->next||!record.count(cur->next->val)))
                res++;
            cur=cur->next;
        }
        return res;
    }
};
发布了486 篇原创文章 · 获赞 151 · 访问量 11万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览