[鏈表]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;
    }
};
發佈了509 篇原創文章 · 獲贊 173 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章