817 鍊錶元件

2021-09-26 08:41:42 字數 750 閱讀 9168

給定乙個鍊錶(鍊錶結點包含乙個整型值)的頭結點 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->4

g = [0, 3, 1, 4]

輸出: 2

解釋: 

鍊錶中,0 和 1 是相連線的,3 和 4 是相連線的,所以 [0, 1] 和 [3, 4] 是兩個元件,故返回 2。

注意:如果 n 是給定鍊錶 head 的長度,1 <= n <= 10000。

鍊錶中每個結點的值所在範圍為 [0, n - 1]。

1 <= g.length <= 10000

g 是鍊錶中所有結點的值的乙個子集.

解法:

class solution 

head = head->next;

}return res;

}};

817 鍊錶元件

817.鍊錶元件 看懂題目是關鍵,因為缺失的結點值會將原鍊錶斷開,實際上就是讓我們求有多少個相連的子鍊錶。方法1 遍歷鍊錶,每個節點在g中找到則為1,否則為0,存入棧中stack 1,1,0,1,1 然後再對棧進行判斷 我們對鍊錶進行一次掃瞄,乙個元件在鍊錶中對應一段極長的連續節點,因此如果當前的節...

817 鍊錶元件

求煉表中一段最長連續結點的值 值必須出現在列表g中,不要求順序 構成的集合的個數 一開始還以為是要求順序的,想說用遞迴來做,發現鍊錶的值只是出現在列表中而已,因此判斷鍊錶中的值出現在列表中的次數 連續不算 即可,有點類似移動視窗的思路 下面的實現是優化了幾次,第一次是使用了dict,第二次是不需要統...

鍊錶 817 鍊錶元件

817.鍊錶元件 給定煉表頭結點 head,該鍊錶上的每個結點都有乙個 唯一的整型值 同時給定列表 g,該列表是上述鍊錶中整型值的乙個子集。返回列表 g 中元件的個數,這裡對元件的定義為 鍊錶中一段最長連續結點的值 該值必須在列表 g 中 構成的集合。示例 1 輸入 head 0 1 2 3 g 0...