樂扣T817 OJ4 鍊錶元件 c

2021-10-07 18:46:07 字數 1498 閱讀 7743

問題描述 :

給定煉表頭結點 head,該鍊錶上的每個結點都有乙個唯一的整型值 。

同時給定列表 g,該列表是上述鍊錶中整型值的乙個子集。

返回列表 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 是鍊錶中所有結點的值的乙個子集.

輸入說明 :

首先輸入鍊錶長度len,然後輸入len個整數,以空格分隔。

再輸入g的大小m,然後輸入m個整數,以空格分隔。

輸出說明 :

輸出乙個整數,表示結果。

輸入範例:

40 1 2 3

30 1 3

輸出範例:

2

#include

#include

using

namespace std;

struct listnode

listnode

(int x)

:val

(x),

next

(null

)listnode

(int x, listnode *next)

:val

(x),

next

(next)};

class

solution

else

} p=p-

>next;

}return num;}}

;listnode *

createbytail()

return head;

}int

main()

res=

solution()

.numcomponents

(head,g)

; cout

}

樂扣T143 OJ1 重排鍊錶 c

問題描述 給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4 5,重新排列為 ...