鍊錶 817 鍊錶元件

2021-10-18 17:57:07 字數 917 閱讀 2657

817. 鍊錶元件

給定煉表頭結點 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。

我們對鍊錶進行一次掃瞄,乙個元件在鍊錶中對應一段極長的連續節點,因此如果當前的節點在列表 g 中,並且下乙個節點不在列表 g 中,我們就找到了乙個元件的尾節點,可以將答案加 1。

例如,當鍊表為 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7,g 為 [0, 2, 3, 5, 7] 時,我們掃瞄之後可以發現 0, 3, 5, 7 四個節點是元件的尾節點,那麼答案就為 4。

public

intnumcomponents

(listnode head,

int[

] g)

listnode cur = head;

int ans =0;

while

(cur != null)

cur = cur.next;

}return ans;

}

817 鍊錶元件

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

817 鍊錶元件

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

817 鍊錶元件

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